Results Study 2: Self-Improvement and Self-Acceptance as Mechanisms of Positive Personality Change

Author

[blinded]

1 Load packages

Show the code
library(renv)
library(tidyverse)
library(broom)
library(labelled)
library(psych)
library(GPArotation)
#library(devtools)
#install_github("cran/multicon") # not on CRAN atm
library(multicon)
library(correlation)
library(careless)
library(corrplot)
library(lavaan)
library(semTools)
library(semPlot)
library(knitr)
library(ggdist)
library(ggforce)
library(cowplot)
library(nortest)
library(lmerTest)

2 Data cleaning

Show the code
source("clean_data_st2.R")

3 Create item parcels

3.1 Well-being measures

Reshape data

Show the code
df_sbsa2_wide_wb <- df_sbsa2 %>% 
  arrange(pid, time) %>% 
  select(pid, time, rando, starts_with(c("sw06", "ml01", "rs01", "sc01"))) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = starts_with(c("sw06", "ml01", "rs01", "sc01")))
# colnames(df_sbsa2_wide_wb)

3.1.1 Meaning in life

Check CFA item loadings at T1

cfa_meaning <- '
# Define the latent factors
meaning1 =~ NA*ml01_01_t1 + lambda1*ml01_01_t1 + lambda2*ml01_02_t1 + lambda3*ml01_03_t1 + lambda4*ml01_04_t1 + lambda5*ml01_05_t1 + lambda6*ml01_06_t1 + lambda7*ml01_07_t1 + lambda8*ml01_08_t1 + lambda9*ml01_09_t1 + lambda10*ml01_10_t1

# Intercepts
ml01_01_t1 ~ i1*1
ml01_02_t1 ~ 1
ml01_03_t1 ~ 1
ml01_04_t1 ~ 1
ml01_05_t1 ~ 1
ml01_06_t1 ~ 1
ml01_07_t1 ~ 1
ml01_08_t1 ~ 1
ml01_09_t1 ~ 1
ml01_10_t1 ~ 1

# Unique Variances
ml01_01_t1 ~~ ml01_01_t1
ml01_02_t1 ~~ ml01_02_t1
ml01_03_t1 ~~ ml01_03_t1
ml01_04_t1 ~~ ml01_04_t1
ml01_05_t1 ~~ ml01_05_t1
ml01_06_t1 ~~ ml01_06_t1
ml01_07_t1 ~~ ml01_07_t1
ml01_08_t1 ~~ ml01_08_t1
ml01_09_t1 ~~ ml01_09_t1
ml01_10_t1 ~~ ml01_10_t1

# Latent Variable Means
meaning1 ~ 0*1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
'
fit_cfa_meaning <- cfa(cfa_meaning, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_cfa_meaning, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 23 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        30

                                                  Used       Total
  Number of observations                           847         849
  Number of missing patterns                         1            

Model Test User Model:
                                                      
  Test statistic                              2451.486
  Degrees of freedom                                35
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              5903.003
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.587
  Tucker-Lewis Index (TLI)                       0.470
                                                      
  Robust Comparative Fit Index (CFI)             0.587
  Robust Tucker-Lewis Index (TLI)                0.470

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14719.920
  Loglikelihood unrestricted model (H1)     -13494.177
                                                      
  Akaike (AIC)                               29499.840
  Bayesian (BIC)                             29642.091
  Sample-size adjusted Bayesian (SABIC)      29546.820

Root Mean Square Error of Approximation:

  RMSEA                                          0.286
  90 Percent confidence interval - lower         0.276
  90 Percent confidence interval - upper         0.295
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.286
  90 Percent confidence interval - lower         0.276
  90 Percent confidence interval - upper         0.295
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.222

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  meaning1 =~                                         
    m01_01_ (lmb1)    1.478    0.050   29.760    0.000
    m01_02_ (lmb2)   -0.453    0.053   -8.581    0.000
    m01_03_ (lmb3)   -0.312    0.055   -5.697    0.000
    m01_04_ (lmb4)    1.586    0.048   33.354    0.000
    m01_05_ (lmb5)    1.442    0.049   29.455    0.000
    m01_06_ (lmb6)    1.527    0.050   30.720    0.000
    m01_07_ (lmb7)   -0.284    0.055   -5.202    0.000
    m01_08_ (lmb8)   -0.444    0.057   -7.749    0.000
    m01_09_ (lmb9)   -1.460    0.059  -24.872    0.000
    m01_10_ (lm10)   -0.835    0.058  -14.334    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .ml01_01_1 (i1)    4.156    0.060   68.803    0.000
   .ml01_02_1         5.347    0.052  103.093    0.000
   .ml01_03_1         5.123    0.053   96.752    0.000
   .ml01_04_1         3.973    0.060   65.761    0.000
   .ml01_05_1         4.483    0.059   75.615    0.000
   .ml01_06_1         3.970    0.061   64.910    0.000
   .ml01_07_1         5.086    0.053   96.700    0.000
   .ml01_08_1         5.026    0.056   90.118    0.000
   .ml01_09_1         3.880    0.067   57.625    0.000
   .ml01_10_1         4.885    0.060   82.075    0.000
    meaning1          0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .ml01_01_t1        0.905    0.054   16.872    0.000
   .ml01_02_t1        2.073    0.102   20.396    0.000
   .ml01_03_t1        2.277    0.111   20.495    0.000
   .ml01_04_t1        0.576    0.042   13.801    0.000
   .ml01_05_t1        0.898    0.053   16.956    0.000
   .ml01_06_t1        0.836    0.052   16.215    0.000
   .ml01_07_t1        2.263    0.110   20.510    0.000
   .ml01_08_t1        2.438    0.119   20.416    0.000
   .ml01_09_t1        1.706    0.091   18.665    0.000
   .ml01_10_t1        2.304    0.115   20.001    0.000
    meaning1          1.000                           
tidy(fit_cfa_meaning) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 10 × 6
   term                   op    label    estimate std.error std.all
   <chr>                  <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 meaning1 =~ ml01_04_t1 =~    lambda4     1.59     0.0475   0.902
 2 meaning1 =~ ml01_06_t1 =~    lambda6     1.53     0.0497   0.858
 3 meaning1 =~ ml01_01_t1 =~    lambda1     1.48     0.0497   0.841
 4 meaning1 =~ ml01_09_t1 =~    lambda9    -1.46     0.0587  -0.745
 5 meaning1 =~ ml01_05_t1 =~    lambda5     1.44     0.0489   0.836
 6 meaning1 =~ ml01_10_t1 =~    lambda10   -0.835    0.0583  -0.482
 7 meaning1 =~ ml01_02_t1 =~    lambda2    -0.453    0.0528  -0.300
 8 meaning1 =~ ml01_08_t1 =~    lambda8    -0.444    0.0573  -0.273
 9 meaning1 =~ ml01_03_t1 =~    lambda3    -0.312    0.0548  -0.203
10 meaning1 =~ ml01_07_t1 =~    lambda7    -0.284    0.0545  -0.185

Reverse-code and form parcels:

df_sbsa2_wide_wb <- df_sbsa2_wide_wb %>% 
  mutate(ml01_09_t1_r = ml01_09_t1,
         ml01_10_t1_r = ml01_10_t1,
         ml01_02_t1_r = ml01_02_t1,
         ml01_08_t1_r = ml01_08_t1,
         ml01_07_t1_r = ml01_07_t1,
         ml01_03_t1_r = ml01_03_t1,
         ml01_09_t2_r = ml01_09_t2,
         ml01_10_t2_r = ml01_10_t2,
         ml01_02_t2_r = ml01_02_t2,
         ml01_08_t2_r = ml01_08_t2,
         ml01_07_t2_r = ml01_07_t2,
         ml01_03_t2_r = ml01_03_t2,
         ml01_09_t3_r = ml01_09_t3,
         ml01_10_t3_r = ml01_10_t3,
         ml01_02_t3_r = ml01_02_t3,
         ml01_08_t3_r = ml01_08_t3,
         ml01_07_t3_r = ml01_07_t3,
         ml01_03_t3_r = ml01_03_t3) %>% 
  mutate(across(intersect(starts_with("ml01"), ends_with("_r")), 
                ~ recode(.x, `1` = 7L, `2` = 6L, `3` = 5L, `4` = 4L, `5` = 3L, `6` = 2L, `7` = 1L, .default = NA_integer_))) %>% 
  mutate(meaning_par1_t1 = rowMeans(across(c(ml01_04_t1, ml01_10_t1_r, ml01_03_t1_r, ml01_07_t1_r)), na.rm=T),
         meaning_par2_t1 = rowMeans(across(c(ml01_06_t1, ml01_05_t1, ml01_08_t1_r)), na.rm=T),
         meaning_par3_t1 = rowMeans(across(c(ml01_01_t1, ml01_09_t1_r, ml01_02_t1_r)), na.rm=T),
         meaning_par1_t2 = rowMeans(across(c(ml01_04_t2, ml01_10_t2_r, ml01_03_t2_r, ml01_07_t2_r)), na.rm=T),
         meaning_par2_t2 = rowMeans(across(c(ml01_06_t2, ml01_05_t2, ml01_08_t2_r)), na.rm=T),
         meaning_par3_t2 = rowMeans(across(c(ml01_01_t2, ml01_09_t2_r, ml01_02_t2_r)), na.rm=T),
         meaning_par1_t3 = rowMeans(across(c(ml01_04_t3, ml01_10_t3_r, ml01_03_t3_r, ml01_07_t3_r)), na.rm=T),
         meaning_par2_t3 = rowMeans(across(c(ml01_06_t3, ml01_05_t3, ml01_08_t3_r)), na.rm=T),
         meaning_par3_t3 = rowMeans(across(c(ml01_01_t3, ml01_09_t3_r, ml01_02_t3_r)), na.rm=T))

3.1.2 Self-esteem

Check CFA item loadings at T1

cfa_selfes <- '
# Define the latent factors
selfes1 =~ NA*rs01_01_t1 + lambda1*rs01_01_t1 + lambda2*rs01_02_t1 + lambda3*rs01_03_t1 + lambda4*rs01_04_t1 + lambda5*rs01_05_t1 + lambda6*rs01_06_t1 + lambda7*rs01_07_t1 + lambda8*rs01_08_t1 + lambda9*rs01_09_t1 + lambda10*rs01_10_t1

# Intercepts
rs01_01_t1 ~ i1*1
rs01_02_t1 ~ 1
rs01_03_t1 ~ 1
rs01_04_t1 ~ 1
rs01_05_t1 ~ 1
rs01_06_t1 ~ 1
rs01_07_t1 ~ 1
rs01_08_t1 ~ 1
rs01_09_t1 ~ 1
rs01_10_t1 ~ 1

# Unique Variances
rs01_01_t1 ~~ rs01_01_t1
rs01_02_t1 ~~ rs01_02_t1
rs01_03_t1 ~~ rs01_03_t1
rs01_04_t1 ~~ rs01_04_t1
rs01_05_t1 ~~ rs01_05_t1
rs01_06_t1 ~~ rs01_06_t1
rs01_07_t1 ~~ rs01_07_t1
rs01_08_t1 ~~ rs01_08_t1
rs01_09_t1 ~~ rs01_09_t1
rs01_10_t1 ~~ rs01_10_t1

# Latent Variable Means
selfes1 ~ 0*1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
'
fit_cfa_selfes <- cfa(cfa_selfes, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_cfa_selfes, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 15 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        30

                                                  Used       Total
  Number of observations                           847         849
  Number of missing patterns                         1            

Model Test User Model:
                                                      
  Test statistic                               493.618
  Degrees of freedom                                35
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              4386.991
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.894
  Tucker-Lewis Index (TLI)                       0.864
                                                      
  Robust Comparative Fit Index (CFI)             0.894
  Robust Tucker-Lewis Index (TLI)                0.864

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -11502.923
  Loglikelihood unrestricted model (H1)     -11256.114
                                                      
  Akaike (AIC)                               23065.846
  Bayesian (BIC)                             23208.097
  Sample-size adjusted Bayesian (SABIC)      23112.827

Root Mean Square Error of Approximation:

  RMSEA                                          0.124
  90 Percent confidence interval - lower         0.115
  90 Percent confidence interval - upper         0.134
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.124
  90 Percent confidence interval - lower         0.115
  90 Percent confidence interval - upper         0.134
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.062

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  selfes1 =~                                          
    r01_01_ (lmb1)    0.867    0.036   23.906    0.000
    r01_02_ (lmb2)   -0.997    0.042  -23.899    0.000
    r01_03_ (lmb3)    0.501    0.028   17.737    0.000
    r01_04_ (lmb4)    0.571    0.033   17.507    0.000
    r01_05_ (lmb5)   -0.932    0.039  -23.875    0.000
    r01_06_ (lmb6)   -1.063    0.041  -26.027    0.000
    r01_07_ (lmb7)    0.702    0.033   20.966    0.000
    r01_08_ (lmb8)   -0.619    0.041  -14.943    0.000
    r01_09_ (lmb9)   -1.150    0.039  -29.187    0.000
    r01_10_ (lm10)    0.979    0.035   27.592    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .rs01_01_1 (i1)    3.034    0.041   74.189    0.000
   .rs01_02_1         3.174    0.047   67.592    0.000
   .rs01_03_1         3.947    0.030  132.913    0.000
   .rs01_04_1         3.824    0.034  111.837    0.000
   .rs01_05_1         2.789    0.044   63.327    0.000
   .rs01_06_1         3.223    0.047   68.318    0.000
   .rs01_07_1         3.648    0.036  100.087    0.000
   .rs01_08_1         3.816    0.042   89.803    0.000
   .rs01_09_1         2.653    0.047   56.001    0.000
   .rs01_10_1         3.218    0.042   76.962    0.000
    selfes1           0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .rs01_01_t1        0.665    0.036   18.392    0.000
   .rs01_02_t1        0.873    0.048   18.258    0.000
   .rs01_03_t1        0.496    0.025   19.518    0.000
   .rs01_04_t1        0.665    0.034   19.560    0.000
   .rs01_05_t1        0.774    0.042   18.468    0.000
   .rs01_06_t1        0.755    0.043   17.571    0.000
   .rs01_07_t1        0.632    0.033   18.965    0.000
   .rs01_08_t1        1.146    0.058   19.925    0.000
   .rs01_09_t1        0.577    0.036   16.228    0.000
   .rs01_10_t1        0.523    0.031   17.066    0.000
    selfes1           1.000                           
tidy(fit_cfa_selfes) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 10 × 6
   term                  op    label    estimate std.error std.all
   <chr>                 <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 selfes1 =~ rs01_09_t1 =~    lambda9    -1.15     0.0394  -0.834
 2 selfes1 =~ rs01_06_t1 =~    lambda6    -1.06     0.0409  -0.774
 3 selfes1 =~ rs01_02_t1 =~    lambda2    -0.997    0.0417  -0.730
 4 selfes1 =~ rs01_10_t1 =~    lambda10    0.979    0.0355   0.804
 5 selfes1 =~ rs01_05_t1 =~    lambda5    -0.932    0.0390  -0.727
 6 selfes1 =~ rs01_01_t1 =~    lambda1     0.867    0.0363   0.729
 7 selfes1 =~ rs01_07_t1 =~    lambda7     0.702    0.0335   0.662
 8 selfes1 =~ rs01_08_t1 =~    lambda8    -0.619    0.0414  -0.500
 9 selfes1 =~ rs01_04_t1 =~    lambda4     0.571    0.0326   0.573
10 selfes1 =~ rs01_03_t1 =~    lambda3     0.501    0.0283   0.580

Reverse-code and form parcels:

df_sbsa2_wide_wb <- df_sbsa2_wide_wb %>% 
  mutate(rs01_09_t1_r = rs01_09_t1,
         rs01_06_t1_r = rs01_06_t1,
         rs01_02_t1_r = rs01_02_t1,
         rs01_05_t1_r = rs01_05_t1,
         rs01_08_t1_r = rs01_08_t1,
         rs01_09_t2_r = rs01_09_t2,
         rs01_06_t2_r = rs01_06_t2,
         rs01_02_t2_r = rs01_02_t2,
         rs01_05_t2_r = rs01_05_t2,
         rs01_08_t2_r = rs01_08_t2,
         rs01_09_t3_r = rs01_09_t3,
         rs01_06_t3_r = rs01_06_t3,
         rs01_02_t3_r = rs01_02_t3,
         rs01_05_t3_r = rs01_05_t3,
         rs01_08_t3_r = rs01_08_t3) %>% 
  mutate(across(intersect(starts_with("rs01"), ends_with("_r")), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(selfes_par1_t1 = rowMeans(across(c(rs01_09_t1_r, rs01_01_t1, rs01_04_t1, rs01_03_t1)), na.rm=T),
         selfes_par2_t1 = rowMeans(across(c(rs01_06_t1_r, rs01_05_t1_r, rs01_08_t1_r)), na.rm=T),
         selfes_par3_t1 = rowMeans(across(c(rs01_02_t1_r, rs01_10_t1, rs01_07_t1)), na.rm=T),
         selfes_par1_t2 = rowMeans(across(c(rs01_09_t2_r, rs01_01_t2, rs01_04_t2, rs01_03_t2)), na.rm=T),
         selfes_par2_t2 = rowMeans(across(c(rs01_06_t2_r, rs01_05_t2_r, rs01_08_t2_r)), na.rm=T),
         selfes_par3_t2 = rowMeans(across(c(rs01_02_t2_r, rs01_10_t2, rs01_07_t2)), na.rm=T),
         selfes_par1_t3 = rowMeans(across(c(rs01_09_t3_r, rs01_01_t3, rs01_04_t3, rs01_03_t3)), na.rm=T),
         selfes_par2_t3 = rowMeans(across(c(rs01_06_t3_r, rs01_05_t3_r, rs01_08_t3_r)), na.rm=T),
         selfes_par3_t3 = rowMeans(across(c(rs01_02_t3_r, rs01_10_t3, rs01_07_t3)), na.rm=T))

3.1.3 Self-concept clarity

Check CFA item loadings at T1

cfa_concept <- '
# Define the latent factors
concept1 =~ NA*sc01_01_t1 + lambda1*sc01_01_t1 + lambda2*sc01_02_t1 + lambda3*sc01_03_t1 + lambda4*sc01_04_t1 + lambda5*sc01_05_t1 + lambda6*sc01_06_t1 + lambda7*sc01_07_t1 + lambda8*sc01_08_t1 + lambda9*sc01_09_t1 + lambda10*sc01_10_t1 + lambda11*sc01_11_t1 + lambda12*sc01_12_t1

# Intercepts
sc01_01_t1 ~ i1*1
sc01_02_t1 ~ 1
sc01_03_t1 ~ 1
sc01_04_t1 ~ 1
sc01_05_t1 ~ 1
sc01_06_t1 ~ 1
sc01_07_t1 ~ 1
sc01_08_t1 ~ 1
sc01_09_t1 ~ 1
sc01_10_t1 ~ 1
sc01_11_t1 ~ 1
sc01_12_t1 ~ 1

# Unique Variances
sc01_01_t1 ~~ sc01_01_t1
sc01_02_t1 ~~ sc01_02_t1
sc01_03_t1 ~~ sc01_03_t1
sc01_04_t1 ~~ sc01_04_t1
sc01_05_t1 ~~ sc01_05_t1
sc01_06_t1 ~~ sc01_06_t1
sc01_07_t1 ~~ sc01_07_t1
sc01_08_t1 ~~ sc01_08_t1
sc01_09_t1 ~~ sc01_09_t1
sc01_10_t1 ~~ sc01_10_t1
sc01_11_t1 ~~ sc01_11_t1
sc01_12_t1 ~~ sc01_12_t1

# Latent Variable Means
concept1 ~ 0*1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
'
fit_cfa_concept <- cfa(cfa_concept, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_cfa_concept, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 32 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           847         849
  Number of missing patterns                         2            

Model Test User Model:
                                                      
  Test statistic                               430.284
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              4809.241
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.921
  Tucker-Lewis Index (TLI)                       0.903
                                                      
  Robust Comparative Fit Index (CFI)             0.921
  Robust Tucker-Lewis Index (TLI)                0.903

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -15026.110
  Loglikelihood unrestricted model (H1)     -14810.968
                                                      
  Akaike (AIC)                               30124.220
  Bayesian (BIC)                             30294.921
  Sample-size adjusted Bayesian (SABIC)      30180.596

Root Mean Square Error of Approximation:

  RMSEA                                          0.091
  90 Percent confidence interval - lower         0.083
  90 Percent confidence interval - upper         0.099
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    0.987
                                                      
  Robust RMSEA                                   0.091
  90 Percent confidence interval - lower         0.083
  90 Percent confidence interval - upper         0.099
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             0.987

Standardized Root Mean Square Residual:

  SRMR                                           0.040

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  concept1 =~                                         
    s01_01_ (lmb1)    0.939    0.040   23.441    0.000
    s01_02_ (lmb2)    1.028    0.042   24.709    0.000
    s01_03_ (lmb3)    0.965    0.041   23.263    0.000
    s01_04_ (lmb4)    1.030    0.041   25.217    0.000
    s01_05_ (lmb5)    0.820    0.043   18.976    0.000
    s01_06_ (lmb6)    0.038    0.044    0.874    0.382
    s01_07_ (lmb7)    0.801    0.044   18.176    0.000
    s01_08_ (lmb8)    1.053    0.038   28.033    0.000
    s01_09_ (lmb9)    1.034    0.039   26.382    0.000
    s01_10_ (lm10)    0.934    0.040   23.116    0.000
    s01_11_ (lm11)   -0.760    0.039  -19.544    0.000
    s01_12_ (lm12)    0.841    0.043   19.695    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .sc01_01_1 (i1)    3.157    0.045   70.268    0.000
   .sc01_02_1         3.378    0.047   71.322    0.000
   .sc01_03_1         3.232    0.046   69.556    0.000
   .sc01_04_1         3.139    0.047   67.116    0.000
   .sc01_05_1         2.974    0.046   64.411    0.000
   .sc01_06_1         2.889    0.042   69.113    0.000
   .sc01_07_1         2.700    0.047   57.795    0.000
   .sc01_08_1         2.753    0.045   61.854    0.000
   .sc01_09_1         2.856    0.046   62.701    0.000
   .sc01_10_1         2.926    0.045   64.757    0.000
   .sc01_11_1         3.243    0.042   77.576    0.000
   .sc01_12_1         3.115    0.046   67.710    0.000
    concept1          0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .sc01_01_t1        0.829    0.045   18.572    0.000
   .sc01_02_t1        0.843    0.046   18.184    0.000
   .sc01_03_t1        0.896    0.048   18.622    0.000
   .sc01_04_t1        0.793    0.044   18.037    0.000
   .sc01_05_t1        1.134    0.058   19.475    0.000
   .sc01_06_t1        1.479    0.072   20.577    0.000
   .sc01_07_t1        1.208    0.062   19.612    0.000
   .sc01_08_t1        0.570    0.034   16.947    0.000
   .sc01_09_t1        0.688    0.039   17.655    0.000
   .sc01_10_t1        0.856    0.046   18.662    0.000
   .sc01_11_t1        0.903    0.047   19.403    0.000
   .sc01_12_t1        1.085    0.056   19.402    0.000
    concept1          1.000                           
tidy(fit_cfa_concept) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                   op    label    estimate std.error std.all
   <chr>                  <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 concept1 =~ sc01_08_t1 =~    lambda8    1.05      0.0375  0.812 
 2 concept1 =~ sc01_09_t1 =~    lambda9    1.03      0.0392  0.780 
 3 concept1 =~ sc01_04_t1 =~    lambda4    1.03      0.0408  0.756 
 4 concept1 =~ sc01_02_t1 =~    lambda2    1.03      0.0416  0.746 
 5 concept1 =~ sc01_03_t1 =~    lambda3    0.965     0.0415  0.714 
 6 concept1 =~ sc01_01_t1 =~    lambda1    0.939     0.0400  0.718 
 7 concept1 =~ sc01_10_t1 =~    lambda10   0.934     0.0404  0.710 
 8 concept1 =~ sc01_12_t1 =~    lambda12   0.841     0.0427  0.628 
 9 concept1 =~ sc01_05_t1 =~    lambda5    0.820     0.0432  0.610 
10 concept1 =~ sc01_07_t1 =~    lambda7    0.801     0.0440  0.589 
11 concept1 =~ sc01_11_t1 =~    lambda11  -0.760     0.0389 -0.624 
12 concept1 =~ sc01_06_t1 =~    lambda6    0.0381    0.0436  0.0313

Reverse-code and form parcels:

df_sbsa2_wide_wb <- df_sbsa2_wide_wb %>% # based on the item content, it makes more sense here to recode all except sc01_11
  mutate(sc01_01_t1_r = sc01_01_t1,
         sc01_02_t1_r = sc01_02_t1,
         sc01_03_t1_r = sc01_03_t1,
         sc01_04_t1_r = sc01_04_t1,
         sc01_05_t1_r = sc01_05_t1,
         sc01_06_t1_r = sc01_06_t1,
         sc01_07_t1_r = sc01_07_t1,
         sc01_08_t1_r = sc01_08_t1,
         sc01_09_t1_r = sc01_09_t1,
         sc01_10_t1_r = sc01_10_t1,
         sc01_12_t1_r = sc01_12_t1,
         sc01_01_t2_r = sc01_01_t2,
         sc01_02_t2_r = sc01_02_t2,
         sc01_03_t2_r = sc01_03_t2,
         sc01_04_t2_r = sc01_04_t2,
         sc01_05_t2_r = sc01_05_t2,
         sc01_06_t2_r = sc01_06_t2,
         sc01_07_t2_r = sc01_07_t2,
         sc01_08_t2_r = sc01_08_t2,
         sc01_09_t2_r = sc01_09_t2,
         sc01_10_t2_r = sc01_10_t2,
         sc01_12_t2_r = sc01_12_t2,
         sc01_01_t3_r = sc01_01_t3,
         sc01_02_t3_r = sc01_02_t3,
         sc01_03_t3_r = sc01_03_t3,
         sc01_04_t3_r = sc01_04_t3,
         sc01_05_t3_r = sc01_05_t3,
         sc01_06_t3_r = sc01_06_t3,
         sc01_07_t3_r = sc01_07_t3,
         sc01_08_t3_r = sc01_08_t3,
         sc01_09_t3_r = sc01_09_t3,
         sc01_10_t3_r = sc01_10_t3,
         sc01_12_t3_r = sc01_12_t3) %>% 
  mutate(across(intersect(starts_with("sc01"), ends_with("_r")), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(concept_par1_t1 = rowMeans(across(c(sc01_08_t1_r, sc01_01_t1_r, sc01_05_t1_r, sc01_06_t1_r)), na.rm=T),
         concept_par2_t1 = rowMeans(across(c(sc01_09_t1_r, sc01_03_t1_r, sc01_12_t1_r, sc01_11_t1)), na.rm=T),
         concept_par3_t1 = rowMeans(across(c(sc01_04_t1_r, sc01_02_t1_r, sc01_10_t1_r, sc01_07_t1_r)), na.rm=T),
         concept_par1_t2 = rowMeans(across(c(sc01_08_t2_r, sc01_01_t2_r, sc01_05_t2_r, sc01_06_t2_r)), na.rm=T),
         concept_par2_t2 = rowMeans(across(c(sc01_09_t2_r, sc01_03_t2_r, sc01_12_t2_r, sc01_11_t2)), na.rm=T),
         concept_par3_t2 = rowMeans(across(c(sc01_04_t2_r, sc01_02_t2_r, sc01_10_t2_r, sc01_07_t2_r)), na.rm=T),
         concept_par1_t3 = rowMeans(across(c(sc01_08_t3_r, sc01_01_t3_r, sc01_05_t3_r, sc01_06_t3_r)), na.rm=T),
         concept_par2_t3 = rowMeans(across(c(sc01_09_t3_r, sc01_03_t3_r, sc01_12_t3_r, sc01_11_t3)), na.rm=T),
         concept_par3_t3 = rowMeans(across(c(sc01_04_t3_r, sc01_02_t3_r, sc01_10_t3_r, sc01_07_t3_r)), na.rm=T))

3.2 Big Five

Show the code
# all time points
df_sbsa2_wide_pers <- df_sbsa2 %>% 
  arrange(pid, time) %>% 
  select(pid, rando, time, starts_with(c("bf05", "bf06"))) %>% 
  mutate(valid=1) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(valid, starts_with(c("bf05", "bf06"))))
# colnames(df_sbsa2_wide_pers)

3.2.1 Extraversion - current self

Check CFA item loadings at T1

cfa_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*bf05_01_t1 + lambda1*bf05_01_t1 + lambda2*bf05_06_t1 + lambda3*bf05_11_t1 + lambda4*bf05_16_t1 + lambda5*bf05_21_t1 + lambda6*bf05_26_t1 + lambda7*bf05_31_t1 + lambda8*bf05_36_t1 + lambda9*bf05_41_t1 + lambda10*bf05_46_t1 + lambda11*bf05_51_t1 + lambda12*bf05_56_t1

# Intercepts
bf05_01_t1 ~ i1*1
bf05_06_t1 ~ 1
bf05_11_t1 ~ 1
bf05_16_t1 ~ 1
bf05_21_t1 ~ 1
bf05_26_t1 ~ 1
bf05_31_t1 ~ 1
bf05_36_t1 ~ 1
bf05_41_t1 ~ 1
bf05_46_t1 ~ 1
bf05_51_t1 ~ 1
bf05_56_t1 ~ 1

# Unique Variances
bf05_01_t1 ~~ bf05_01_t1
bf05_06_t1 ~~ bf05_06_t1
bf05_11_t1 ~~ bf05_11_t1
bf05_16_t1 ~~ bf05_16_t1
bf05_21_t1 ~~ bf05_21_t1
bf05_26_t1 ~~ bf05_26_t1
bf05_31_t1 ~~ bf05_31_t1
bf05_36_t1 ~~ bf05_36_t1
bf05_41_t1 ~~ bf05_41_t1
bf05_46_t1 ~~ bf05_46_t1
bf05_51_t1 ~~ bf05_51_t1
bf05_56_t1 ~~ bf05_56_t1

# Latent Variable Means
extra_curr1 ~ 0*1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
'
fit_cfa_extra_curr <- cfa(cfa_extra_curr, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_extra_curr, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 34 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         5            

Model Test User Model:
                                                      
  Test statistic                               847.969
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              3167.484
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.744
  Tucker-Lewis Index (TLI)                       0.687
                                                      
  Robust Comparative Fit Index (CFI)             0.744
  Robust Tucker-Lewis Index (TLI)                0.687

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -15300.920
  Loglikelihood unrestricted model (H1)     -14876.935
                                                      
  Akaike (AIC)                               30673.840
  Bayesian (BIC)                             30844.584
  Sample-size adjusted Bayesian (SABIC)      30730.259

Root Mean Square Error of Approximation:

  RMSEA                                          0.132
  90 Percent confidence interval - lower         0.124
  90 Percent confidence interval - upper         0.140
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.132
  90 Percent confidence interval - lower         0.124
  90 Percent confidence interval - upper         0.140
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.079

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  extra_curr1 =~                                      
    b05_01_ (lmb1)    0.945    0.042   22.295    0.000
    b05_06_ (lmb2)    0.540    0.042   12.805    0.000
    b05_11_ (lmb3)   -0.322    0.044   -7.334    0.000
    b05_16_ (lmb4)   -0.822    0.041  -19.905    0.000
    b05_21_ (lmb5)    0.770    0.043   18.089    0.000
    b05_26_ (lmb6)   -0.542    0.047  -11.619    0.000
    b05_31_ (lmb7)   -0.776    0.036  -21.343    0.000
    b05_36_ (lmb8)   -0.468    0.041  -11.547    0.000
    b05_41_ (lmb9)    0.676    0.041   16.507    0.000
    b05_46_ (lm10)    0.925    0.043   21.606    0.000
    b05_51_ (lm11)   -0.586    0.043  -13.508    0.000
    b05_56_ (lm12)    0.600    0.039   15.397    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_01_1 (i1)    2.759    0.046   60.440    0.000
   .bf05_06_1         3.073    0.041   75.058    0.000
   .bf05_11_1         2.769    0.041   66.976    0.000
   .bf05_16_1         3.755    0.043   87.599    0.000
   .bf05_21_1         2.721    0.043   62.705    0.000
   .bf05_26_1         3.057    0.045   68.086    0.000
   .bf05_31_1         4.001    0.039  103.823    0.000
   .bf05_36_1         3.158    0.039   80.714    0.000
   .bf05_41_1         2.862    0.041   69.918    0.000
   .bf05_46_1         2.919    0.046   63.955    0.000
   .bf05_51_1         3.188    0.042   75.107    0.000
   .bf05_56_1         3.279    0.039   84.689    0.000
    extr_crr1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_01_t1        0.874    0.052   16.939    0.000
   .bf05_06_t1        1.130    0.058   19.592    0.000
   .bf05_11_t1        1.343    0.066   20.296    0.000
   .bf05_16_t1        0.881    0.050   17.454    0.000
   .bf05_21_t1        1.003    0.055   18.195    0.000
   .bf05_26_t1        1.415    0.072   19.774    0.000
   .bf05_31_t1        0.656    0.038   17.105    0.000
   .bf05_36_t1        1.079    0.054   19.840    0.000
   .bf05_41_t1        0.961    0.052   18.580    0.000
   .bf05_46_t1        0.909    0.053   17.105    0.000
   .bf05_51_t1        1.184    0.061   19.467    0.000
   .bf05_56_t1        0.910    0.048   19.012    0.000
    extra_curr1       1.000                           
tidy(fit_cfa_extra_curr) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                      op    label    estimate std.error std.all
   <chr>                     <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 extra_curr1 =~ bf05_01_t1 =~    lambda1     0.945    0.0424   0.711
 2 extra_curr1 =~ bf05_46_t1 =~    lambda10    0.925    0.0428   0.696
 3 extra_curr1 =~ bf05_16_t1 =~    lambda4    -0.822    0.0413  -0.659
 4 extra_curr1 =~ bf05_31_t1 =~    lambda7    -0.776    0.0364  -0.692
 5 extra_curr1 =~ bf05_21_t1 =~    lambda5     0.770    0.0426   0.610
 6 extra_curr1 =~ bf05_41_t1 =~    lambda9     0.676    0.0410   0.568
 7 extra_curr1 =~ bf05_56_t1 =~    lambda12    0.600    0.0389   0.532
 8 extra_curr1 =~ bf05_51_t1 =~    lambda11   -0.586    0.0434  -0.474
 9 extra_curr1 =~ bf05_26_t1 =~    lambda6    -0.542    0.0467  -0.415
10 extra_curr1 =~ bf05_06_t1 =~    lambda2     0.540    0.0421   0.453
11 extra_curr1 =~ bf05_36_t1 =~    lambda8    -0.468    0.0405  -0.411
12 extra_curr1 =~ bf05_11_t1 =~    lambda3    -0.322    0.0438  -0.267

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf05_31_t1_r = bf05_31_t1,
         bf05_16_t1_r = bf05_16_t1,
         bf05_26_t1_r = bf05_26_t1,
         bf05_51_t1_r = bf05_51_t1,
         bf05_36_t1_r = bf05_36_t1,
         bf05_11_t1_r = bf05_11_t1,
         bf05_31_t2_r = bf05_31_t2,
         bf05_16_t2_r = bf05_16_t2,
         bf05_26_t2_r = bf05_26_t2,
         bf05_51_t2_r = bf05_51_t2,
         bf05_36_t2_r = bf05_36_t2,
         bf05_11_t2_r = bf05_11_t2,
         bf05_31_t3_r = bf05_31_t3,
         bf05_16_t3_r = bf05_16_t3,
         bf05_26_t3_r = bf05_26_t3,
         bf05_51_t3_r = bf05_51_t3,
         bf05_36_t3_r = bf05_36_t3,
         bf05_11_t3_r = bf05_11_t3) %>% 
  mutate(across(c(bf05_31_t1_r, bf05_16_t1_r, bf05_26_t1_r, bf05_51_t1_r, bf05_36_t1_r, bf05_11_t1_r, 
                  bf05_31_t2_r, bf05_16_t2_r, bf05_26_t2_r, bf05_51_t2_r, bf05_36_t2_r, bf05_11_t2_r, 
                  bf05_31_t3_r, bf05_16_t3_r, bf05_26_t3_r, bf05_51_t3_r, bf05_36_t3_r, bf05_11_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(extra_curr_par1_t1 = rowMeans(across(c(bf05_01_t1, bf05_41_t1, bf05_26_t1_r, bf05_11_t1_r)), na.rm=T),
         extra_curr_par2_t1 = rowMeans(across(c(bf05_46_t1, bf05_21_t1, bf05_51_t1_r, bf05_36_t1_r)), na.rm=T),
         extra_curr_par3_t1 = rowMeans(across(c(bf05_16_t1_r, bf05_31_t1_r, bf05_56_t1, bf05_06_t1)), na.rm=T),
         extra_curr_par1_t2 = rowMeans(across(c(bf05_01_t2, bf05_41_t2, bf05_26_t2_r, bf05_11_t2_r)), na.rm=T),
         extra_curr_par2_t2 = rowMeans(across(c(bf05_46_t2, bf05_21_t2, bf05_51_t2_r, bf05_36_t2_r)), na.rm=T),
         extra_curr_par3_t2 = rowMeans(across(c(bf05_16_t2_r, bf05_31_t2_r, bf05_56_t2, bf05_06_t2)), na.rm=T),
         extra_curr_par1_t3 = rowMeans(across(c(bf05_01_t3, bf05_41_t3, bf05_26_t3_r, bf05_11_t3_r)), na.rm=T),
         extra_curr_par2_t3 = rowMeans(across(c(bf05_46_t3, bf05_21_t3, bf05_51_t3_r, bf05_36_t3_r)), na.rm=T),
         extra_curr_par3_t3 = rowMeans(across(c(bf05_16_t3_r, bf05_31_t3_r, bf05_56_t3, bf05_06_t3)), na.rm=T))

3.2.2 Extraversion - ideal self

Check CFA item loadings at T1

cfa_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*bf06_01_t1 + lambda1*bf06_01_t1 + lambda2*bf06_06_t1 + lambda3*bf06_11_t1 + lambda4*bf06_16_t1 + lambda5*bf06_21_t1 + lambda6*bf06_26_t1 + lambda7*bf06_31_t1 + lambda8*bf06_36_t1 + lambda9*bf06_41_t1 + lambda10*bf06_46_t1 + lambda11*bf06_51_t1 + lambda12*bf06_56_t1

# Intercepts
bf06_01_t1 ~ i1*1
bf06_06_t1 ~ 1
bf06_11_t1 ~ 1
bf06_16_t1 ~ 1
bf06_21_t1 ~ 1
bf06_26_t1 ~ 1
bf06_31_t1 ~ 1
bf06_36_t1 ~ 1
bf06_41_t1 ~ 1
bf06_46_t1 ~ 1
bf06_51_t1 ~ 1
bf06_56_t1 ~ 1

# Unique Variances
bf06_01_t1 ~~ bf06_01_t1
bf06_06_t1 ~~ bf06_06_t1
bf06_11_t1 ~~ bf06_11_t1
bf06_16_t1 ~~ bf06_16_t1
bf06_21_t1 ~~ bf06_21_t1
bf06_26_t1 ~~ bf06_26_t1
bf06_31_t1 ~~ bf06_31_t1
bf06_36_t1 ~~ bf06_36_t1
bf06_41_t1 ~~ bf06_41_t1
bf06_46_t1 ~~ bf06_46_t1
bf06_51_t1 ~~ bf06_51_t1
bf06_56_t1 ~~ bf06_56_t1

# Latent Variable Means
extra_ideal1 ~ 0*1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
'
fit_cfa_extra_ideal <- cfa(cfa_extra_ideal, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_extra_ideal, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 40 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         6            

Model Test User Model:
                                                      
  Test statistic                               254.727
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              1146.934
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.814
  Tucker-Lewis Index (TLI)                       0.773
                                                      
  Robust Comparative Fit Index (CFI)             0.816
  Robust Tucker-Lewis Index (TLI)                0.775

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14072.893
  Loglikelihood unrestricted model (H1)     -13945.529
                                                      
  Akaike (AIC)                               28217.786
  Bayesian (BIC)                             28388.529
  Sample-size adjusted Bayesian (SABIC)      28274.204

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.058
  90 Percent confidence interval - upper         0.075
  P-value H_0: RMSEA <= 0.050                    0.001
  P-value H_0: RMSEA >= 0.080                    0.003
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.058
  90 Percent confidence interval - upper         0.075
  P-value H_0: Robust RMSEA <= 0.050             0.001
  P-value H_0: Robust RMSEA >= 0.080             0.003

Standardized Root Mean Square Residual:

  SRMR                                           0.049

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  extra_ideal1 =~                                     
    b06_01_ (lmb1)    0.409    0.034   12.191    0.000
    b06_06_ (lmb2)    0.250    0.036    6.881    0.000
    b06_11_ (lmb3)   -0.307    0.054   -5.691    0.000
    b06_16_ (lmb4)   -0.423    0.049   -8.670    0.000
    b06_21_ (lmb5)    0.478    0.042   11.421    0.000
    b06_26_ (lmb6)   -0.430    0.039  -10.915    0.000
    b06_31_ (lmb7)   -0.491    0.042  -11.702    0.000
    b06_36_ (lmb8)   -0.411    0.044   -9.303    0.000
    b06_41_ (lmb9)    0.383    0.029   13.350    0.000
    b06_46_ (lm10)    0.390    0.040    9.738    0.000
    b06_51_ (lm11)   -0.485    0.042  -11.413    0.000
    b06_56_ (lm12)    0.466    0.033   14.281    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_01_1 (i1)    4.237    0.030  142.383    0.000
   .bf06_06_1         4.128    0.031  132.290    0.000
   .bf06_11_1         2.257    0.046   48.598    0.000
   .bf06_16_1         2.857    0.042   68.327    0.000
   .bf06_21_1         3.803    0.037  102.781    0.000
   .bf06_26_1         1.722    0.035   49.589    0.000
   .bf06_31_1         2.184    0.037   59.386    0.000
   .bf06_36_1         2.201    0.038   57.183    0.000
   .bf06_41_1         4.471    0.025  176.151    0.000
   .bf06_46_1         3.713    0.035  105.946    0.000
   .bf06_51_1         2.392    0.037   64.098    0.000
   .bf06_56_1         4.265    0.029  146.413    0.000
    extra_dl1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_01_t1        0.580    0.032   18.206    0.000
   .bf06_06_t1        0.760    0.038   19.886    0.000
   .bf06_11_t1        1.733    0.086   20.146    0.000
   .bf06_16_t1        1.301    0.067   19.369    0.000
   .bf06_21_t1        0.930    0.050   18.530    0.000
   .bf06_26_t1        0.834    0.044   18.786    0.000
   .bf06_31_t1        0.901    0.049   18.265    0.000
   .bf06_36_t1        1.083    0.056   19.300    0.000
   .bf06_41_t1        0.399    0.023   17.422    0.000
   .bf06_46_t1        0.887    0.046   19.161    0.000
   .bf06_51_t1        0.942    0.051   18.479    0.000
   .bf06_56_t1        0.502    0.030   16.791    0.000
    extra_ideal1      1.000                           
tidy(fit_cfa_extra_ideal) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                       op    label    estimate std.error std.all
   <chr>                      <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 extra_ideal1 =~ bf06_31_t1 =~    lambda7    -0.491    0.0419  -0.459
 2 extra_ideal1 =~ bf06_51_t1 =~    lambda11   -0.485    0.0425  -0.447
 3 extra_ideal1 =~ bf06_21_t1 =~    lambda5     0.478    0.0418   0.444
 4 extra_ideal1 =~ bf06_56_t1 =~    lambda12    0.466    0.0326   0.549
 5 extra_ideal1 =~ bf06_26_t1 =~    lambda6    -0.430    0.0394  -0.426
 6 extra_ideal1 =~ bf06_16_t1 =~    lambda4    -0.423    0.0488  -0.348
 7 extra_ideal1 =~ bf06_36_t1 =~    lambda8    -0.411    0.0442  -0.367
 8 extra_ideal1 =~ bf06_01_t1 =~    lambda1     0.409    0.0336   0.473
 9 extra_ideal1 =~ bf06_46_t1 =~    lambda10    0.390    0.0400   0.382
10 extra_ideal1 =~ bf06_41_t1 =~    lambda9     0.383    0.0287   0.518
11 extra_ideal1 =~ bf06_11_t1 =~    lambda3    -0.307    0.0540  -0.227
12 extra_ideal1 =~ bf06_06_t1 =~    lambda2     0.250    0.0364   0.276

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf06_31_t1_r = bf06_31_t1,
         bf06_16_t1_r = bf06_16_t1,
         bf06_26_t1_r = bf06_26_t1,
         bf06_51_t1_r = bf06_51_t1,
         bf06_36_t1_r = bf06_36_t1,
         bf06_11_t1_r = bf06_11_t1,
         bf06_31_t2_r = bf06_31_t2,
         bf06_16_t2_r = bf06_16_t2,
         bf06_26_t2_r = bf06_26_t2,
         bf06_51_t2_r = bf06_51_t2,
         bf06_36_t2_r = bf06_36_t2,
         bf06_11_t2_r = bf06_11_t2,
         bf06_31_t3_r = bf06_31_t3,
         bf06_16_t3_r = bf06_16_t3,
         bf06_26_t3_r = bf06_26_t3,
         bf06_51_t3_r = bf06_51_t3,
         bf06_36_t3_r = bf06_36_t3,
         bf06_11_t3_r = bf06_11_t3) %>% 
  mutate(across(c(bf06_31_t1_r, bf06_16_t1_r, bf06_26_t1_r, bf06_51_t1_r, bf06_36_t1_r, bf06_11_t1_r, 
                  bf06_31_t2_r, bf06_16_t2_r, bf06_26_t2_r, bf06_51_t2_r, bf06_36_t2_r, bf06_11_t2_r, 
                  bf06_31_t3_r, bf06_16_t3_r, bf06_26_t3_r, bf06_51_t3_r, bf06_36_t3_r, bf06_11_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(extra_ideal_par1_t1 = rowMeans(across(c(bf06_31_t1_r, bf06_16_t1_r, bf06_46_t1, bf06_06_t1)), na.rm=T),
         extra_ideal_par2_t1 = rowMeans(across(c(bf06_21_t1, bf06_26_t1_r, bf06_01_t1, bf06_11_t1_r)), na.rm=T),
         extra_ideal_par3_t1 = rowMeans(across(c(bf06_51_t1_r, bf06_56_t1, bf06_36_t1_r, bf06_41_t1)), na.rm=T),
         extra_ideal_par1_t2 = rowMeans(across(c(bf06_31_t2_r, bf06_16_t2_r, bf06_46_t2, bf06_06_t2)), na.rm=T),
         extra_ideal_par2_t2 = rowMeans(across(c(bf06_21_t2, bf06_26_t2_r, bf06_01_t2, bf06_11_t2_r)), na.rm=T),
         extra_ideal_par3_t2 = rowMeans(across(c(bf06_51_t2_r, bf06_56_t2, bf06_36_t2_r, bf06_41_t2)), na.rm=T),
         extra_ideal_par1_t3 = rowMeans(across(c(bf06_31_t3_r, bf06_16_t3_r, bf06_46_t3, bf06_06_t3)), na.rm=T),
         extra_ideal_par2_t3 = rowMeans(across(c(bf06_21_t3, bf06_26_t3_r, bf06_01_t3, bf06_11_t3_r)), na.rm=T),
         extra_ideal_par3_t3 = rowMeans(across(c(bf06_51_t3_r, bf06_56_t3, bf06_36_t3_r, bf06_41_t3)), na.rm=T))

3.2.3 Agreeableness - current self

Check CFA item loadings at T1

cfa_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*bf05_02_t1 + lambda1*bf05_02_t1 + lambda2*bf05_07_t1 + lambda3*bf05_12_t1 + lambda4*bf05_17_t1 + lambda5*bf05_22_t1 + lambda6*bf05_27_t1 + lambda7*bf05_32_t1 + lambda8*bf05_37_t1 + lambda9*bf05_42_t1 + lambda10*bf05_47_t1 + lambda11*bf05_52_t1 + lambda12*bf05_57_t1

# Intercepts
bf05_02_t1 ~ i1*1
bf05_07_t1 ~ 1
bf05_12_t1 ~ 1
bf05_17_t1 ~ 1
bf05_22_t1 ~ 1
bf05_27_t1 ~ 1
bf05_32_t1 ~ 1
bf05_37_t1 ~ 1
bf05_42_t1 ~ 1
bf05_47_t1 ~ 1
bf05_52_t1 ~ 1
bf05_57_t1 ~ 1

# Unique Variances
bf05_02_t1 ~~ bf05_02_t1
bf05_07_t1 ~~ bf05_07_t1
bf05_12_t1 ~~ bf05_12_t1
bf05_17_t1 ~~ bf05_17_t1
bf05_22_t1 ~~ bf05_22_t1
bf05_27_t1 ~~ bf05_27_t1
bf05_32_t1 ~~ bf05_32_t1
bf05_37_t1 ~~ bf05_37_t1
bf05_42_t1 ~~ bf05_42_t1
bf05_47_t1 ~~ bf05_47_t1
bf05_52_t1 ~~ bf05_52_t1
bf05_57_t1 ~~ bf05_57_t1

# Latent Variable Means
agree_curr1 ~ 0*1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
'
fit_cfa_agree_curr <- cfa(cfa_agree_curr, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_agree_curr, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 41 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         3            

Model Test User Model:
                                                      
  Test statistic                               532.762
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2295.706
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.785
  Tucker-Lewis Index (TLI)                       0.738
                                                      
  Robust Comparative Fit Index (CFI)             0.785
  Robust Tucker-Lewis Index (TLI)                0.737

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14316.892
  Loglikelihood unrestricted model (H1)     -14050.512
                                                      
  Akaike (AIC)                               28705.785
  Bayesian (BIC)                             28876.529
  Sample-size adjusted Bayesian (SABIC)      28762.203

Root Mean Square Error of Approximation:

  RMSEA                                          0.102
  90 Percent confidence interval - lower         0.094
  90 Percent confidence interval - upper         0.110
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.102
  90 Percent confidence interval - lower         0.094
  90 Percent confidence interval - upper         0.110
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.065

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  agree_curr1 =~                                      
    b05_02_ (lmb1)    0.483    0.031   15.345    0.000
    b05_07_ (lmb2)    0.430    0.025   17.189    0.000
    b05_12_ (lmb3)   -0.606    0.044  -13.801    0.000
    b05_17_ (lmb4)   -0.182    0.055   -3.291    0.001
    b05_22_ (lmb5)   -0.643    0.043  -15.116    0.000
    b05_27_ (lmb6)    0.595    0.042   14.270    0.000
    b05_32_ (lmb7)    0.529    0.032   16.781    0.000
    b05_37_ (lmb8)   -0.741    0.044  -17.020    0.000
    b05_42_ (lmb9)   -0.419    0.045   -9.406    0.000
    b05_47_ (lm10)   -0.789    0.044  -17.761    0.000
    b05_52_ (lm11)    0.418    0.025   16.841    0.000
    b05_57_ (lm12)    0.558    0.043   12.968    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_02_1 (i1)    4.188    0.031  136.262    0.000
   .bf05_07_1         4.449    0.025  179.500    0.000
   .bf05_12_1         2.877    0.042   68.327    0.000
   .bf05_17_1         2.667    0.050   52.975    0.000
   .bf05_22_1         2.172    0.041   52.346    0.000
   .bf05_27_1         3.598    0.040   89.031    0.000
   .bf05_32_1         3.963    0.031  126.684    0.000
   .bf05_37_1         2.486    0.043   57.567    0.000
   .bf05_42_1         3.590    0.041   87.538    0.000
   .bf05_47_1         2.526    0.045   56.750    0.000
   .bf05_52_1         4.300    0.025  175.434    0.000
   .bf05_57_1         3.201    0.041   78.189    0.000
    agre_crr1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_02_t1        0.567    0.031   18.581    0.000
   .bf05_07_t1        0.336    0.019   17.849    0.000
   .bf05_12_t1        1.137    0.060   18.981    0.000
   .bf05_17_t1        2.113    0.103   20.507    0.000
   .bf05_22_t1        1.045    0.056   18.699    0.000
   .bf05_27_t1        1.029    0.054   18.970    0.000
   .bf05_32_t1        0.550    0.030   18.167    0.000
   .bf05_37_t1        1.031    0.057   17.986    0.000
   .bf05_42_t1        1.250    0.063   19.829    0.000
   .bf05_47_t1        1.056    0.059   17.798    0.000
   .bf05_52_t1        0.335    0.019   17.988    0.000
   .bf05_57_t1        1.109    0.058   19.161    0.000
    agree_curr1       1.000                           
tidy(fit_cfa_agree_curr) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                      op    label    estimate std.error std.all
   <chr>                     <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 agree_curr1 =~ bf05_47_t1 =~    lambda10   -0.789    0.0444  -0.609
 2 agree_curr1 =~ bf05_37_t1 =~    lambda8    -0.741    0.0435  -0.589
 3 agree_curr1 =~ bf05_22_t1 =~    lambda5    -0.643    0.0425  -0.532
 4 agree_curr1 =~ bf05_12_t1 =~    lambda3    -0.606    0.0439  -0.494
 5 agree_curr1 =~ bf05_27_t1 =~    lambda6     0.595    0.0417   0.506
 6 agree_curr1 =~ bf05_57_t1 =~    lambda12    0.558    0.0430   0.468
 7 agree_curr1 =~ bf05_32_t1 =~    lambda7     0.529    0.0315   0.581
 8 agree_curr1 =~ bf05_02_t1 =~    lambda1     0.483    0.0315   0.540
 9 agree_curr1 =~ bf05_07_t1 =~    lambda2     0.430    0.0250   0.595
10 agree_curr1 =~ bf05_42_t1 =~    lambda9    -0.419    0.0446  -0.351
11 agree_curr1 =~ bf05_52_t1 =~    lambda11    0.418    0.0248   0.585
12 agree_curr1 =~ bf05_17_t1 =~    lambda4    -0.182    0.0554  -0.124

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf05_47_t1_r = bf05_47_t1,
         bf05_37_t1_r = bf05_37_t1,
         bf05_22_t1_r = bf05_22_t1,
         bf05_12_t1_r = bf05_12_t1,
         bf05_42_t1_r = bf05_42_t1,
         bf05_17_t1_r = bf05_17_t1,
         bf05_47_t2_r = bf05_47_t2,
         bf05_37_t2_r = bf05_37_t2,
         bf05_22_t2_r = bf05_22_t2,
         bf05_12_t2_r = bf05_12_t2,
         bf05_42_t2_r = bf05_42_t2,
         bf05_17_t2_r = bf05_17_t2,
         bf05_47_t3_r = bf05_47_t3,
         bf05_37_t3_r = bf05_37_t3,
         bf05_22_t3_r = bf05_22_t3,
         bf05_12_t3_r = bf05_12_t3,
         bf05_42_t3_r = bf05_42_t3,
         bf05_17_t3_r = bf05_17_t3) %>% 
  mutate(across(c(bf05_47_t1_r, bf05_37_t1_r, bf05_22_t1_r, bf05_12_t1_r, bf05_42_t1_r, bf05_17_t1_r, 
                  bf05_47_t2_r, bf05_37_t2_r, bf05_22_t2_r, bf05_12_t2_r, bf05_42_t2_r, bf05_17_t2_r, 
                  bf05_47_t3_r, bf05_37_t3_r, bf05_22_t3_r, bf05_12_t3_r, bf05_42_t3_r, bf05_17_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(agree_curr_par1_t1 = rowMeans(across(c(bf05_47_t1_r, bf05_57_t1, bf05_07_t1, bf05_17_t1)), na.rm=T),
         agree_curr_par2_t1 = rowMeans(across(c(bf05_37_t1_r, bf05_27_t1, bf05_02_t1, bf05_52_t1)), na.rm=T),
         agree_curr_par3_t1 = rowMeans(across(c(bf05_22_t1_r, bf05_12_t1_r, bf05_32_t1, bf05_42_t1)), na.rm=T),
         agree_curr_par1_t2 = rowMeans(across(c(bf05_47_t2_r, bf05_57_t2, bf05_07_t2, bf05_17_t2)), na.rm=T),
         agree_curr_par2_t2 = rowMeans(across(c(bf05_37_t2_r, bf05_27_t2, bf05_02_t2, bf05_52_t2)), na.rm=T),
         agree_curr_par3_t2 = rowMeans(across(c(bf05_22_t2_r, bf05_12_t2_r, bf05_32_t2, bf05_42_t2)), na.rm=T),
         agree_curr_par1_t3 = rowMeans(across(c(bf05_47_t3_r, bf05_57_t3, bf05_07_t3, bf05_17_t3)), na.rm=T),
         agree_curr_par2_t3 = rowMeans(across(c(bf05_37_t3_r, bf05_27_t3, bf05_02_t3, bf05_52_t3)), na.rm=T),
         agree_curr_par3_t3 = rowMeans(across(c(bf05_22_t3_r, bf05_12_t3_r, bf05_32_t3, bf05_42_t3)), na.rm=T))

3.2.4 Agreeableness - ideal self

Check CFA item loadings at T1

cfa_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*bf06_02_t1 + lambda1*bf06_02_t1 + lambda2*bf06_07_t1 + lambda3*bf06_12_t1 + lambda4*bf06_17_t1 + lambda5*bf06_22_t1 + lambda6*bf06_27_t1 + lambda7*bf06_32_t1 + lambda8*bf06_37_t1 + lambda9*bf06_42_t1 + lambda10*bf06_47_t1 + lambda11*bf06_52_t1 + lambda12*bf06_57_t1

# Intercepts
bf06_02_t1 ~ i1*1
bf06_07_t1 ~ 1
bf06_12_t1 ~ 1
bf06_17_t1 ~ 1
bf06_22_t1 ~ 1
bf06_27_t1 ~ 1
bf06_32_t1 ~ 1
bf06_37_t1 ~ 1
bf06_42_t1 ~ 1
bf06_47_t1 ~ 1
bf06_52_t1 ~ 1
bf06_57_t1 ~ 1

# Unique Variances
bf06_02_t1 ~~ bf06_02_t1
bf06_07_t1 ~~ bf06_07_t1
bf06_12_t1 ~~ bf06_12_t1
bf06_17_t1 ~~ bf06_17_t1
bf06_22_t1 ~~ bf06_22_t1
bf06_27_t1 ~~ bf06_27_t1
bf06_32_t1 ~~ bf06_32_t1
bf06_37_t1 ~~ bf06_37_t1
bf06_42_t1 ~~ bf06_42_t1
bf06_47_t1 ~~ bf06_47_t1
bf06_52_t1 ~~ bf06_52_t1
bf06_57_t1 ~~ bf06_57_t1

# Latent Variable Means
agree_ideal1 ~ 0*1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
'
fit_cfa_agree_ideal <- cfa(cfa_agree_ideal, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_agree_ideal, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 42 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           847         849
  Number of missing patterns                         4            

Model Test User Model:
                                                      
  Test statistic                               233.018
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2098.126
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.912
  Tucker-Lewis Index (TLI)                       0.892
                                                      
  Robust Comparative Fit Index (CFI)             0.912
  Robust Tucker-Lewis Index (TLI)                0.892

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -13331.073
  Loglikelihood unrestricted model (H1)     -13214.564
                                                      
  Akaike (AIC)                               26734.147
  Bayesian (BIC)                             26904.848
  Sample-size adjusted Bayesian (SABIC)      26790.523

Root Mean Square Error of Approximation:

  RMSEA                                          0.063
  90 Percent confidence interval - lower         0.054
  90 Percent confidence interval - upper         0.071
  P-value H_0: RMSEA <= 0.050                    0.006
  P-value H_0: RMSEA >= 0.080                    0.000
                                                      
  Robust RMSEA                                   0.063
  90 Percent confidence interval - lower         0.055
  90 Percent confidence interval - upper         0.071
  P-value H_0: Robust RMSEA <= 0.050             0.006
  P-value H_0: Robust RMSEA >= 0.080             0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.041

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  agree_ideal1 =~                                     
    b06_02_ (lmb1)    0.528    0.032   16.391    0.000
    b06_07_ (lmb2)    0.365    0.023   15.818    0.000
    b06_12_ (lmb3)   -0.515    0.035  -14.679    0.000
    b06_17_ (lmb4)   -0.143    0.059   -2.413    0.016
    b06_22_ (lmb5)   -0.492    0.037  -13.306    0.000
    b06_27_ (lmb6)    0.612    0.037   16.352    0.000
    b06_32_ (lmb7)    0.509    0.032   15.871    0.000
    b06_37_ (lmb8)   -0.511    0.029  -17.449    0.000
    b06_42_ (lmb9)   -0.462    0.044  -10.587    0.000
    b06_47_ (lm10)   -0.716    0.037  -19.412    0.000
    b06_52_ (lm11)    0.452    0.024   18.543    0.000
    b06_57_ (lm12)    0.496    0.037   13.514    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_02_1 (i1)    4.269    0.032  133.231    0.000
   .bf06_07_1         4.650    0.023  204.363    0.000
   .bf06_12_1         1.913    0.034   55.740    0.000
   .bf06_17_1         2.585    0.054   47.665    0.000
   .bf06_22_1         1.789    0.036   49.972    0.000
   .bf06_27_1         3.911    0.037  104.943    0.000
   .bf06_32_1         4.304    0.032  135.497    0.000
   .bf06_37_1         1.633    0.029   55.361    0.000
   .bf06_42_1         2.758    0.041   66.971    0.000
   .bf06_47_1         1.861    0.038   49.122    0.000
   .bf06_52_1         4.540    0.025  183.437    0.000
   .bf06_57_1         3.787    0.036  106.585    0.000
    agree_dl1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_02_t1        0.590    0.032   18.476    0.000
   .bf06_07_t1        0.305    0.016   18.590    0.000
   .bf06_12_t1        0.731    0.039   18.964    0.000
   .bf06_17_t1        2.468    0.120   20.531    0.000
   .bf06_22_t1        0.842    0.044   19.317    0.000
   .bf06_27_t1        0.801    0.043   18.535    0.000
   .bf06_32_t1        0.593    0.032   18.663    0.000
   .bf06_37_t1        0.474    0.026   18.155    0.000
   .bf06_42_t1        1.220    0.062   19.775    0.000
   .bf06_47_t1        0.701    0.040   17.349    0.000
   .bf06_52_t1        0.314    0.018   17.648    0.000
   .bf06_57_t1        0.822    0.043   19.256    0.000
    agree_ideal1      1.000                           
tidy(fit_cfa_agree_ideal) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                       op    label    estimate std.error std.all
   <chr>                      <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 agree_ideal1 =~ bf06_47_t1 =~    lambda10   -0.716    0.0369 -0.650 
 2 agree_ideal1 =~ bf06_27_t1 =~    lambda6     0.612    0.0374  0.565 
 3 agree_ideal1 =~ bf06_02_t1 =~    lambda1     0.528    0.0322  0.567 
 4 agree_ideal1 =~ bf06_12_t1 =~    lambda3    -0.515    0.0351 -0.516 
 5 agree_ideal1 =~ bf06_37_t1 =~    lambda8    -0.511    0.0293 -0.596 
 6 agree_ideal1 =~ bf06_32_t1 =~    lambda7     0.509    0.0321  0.551 
 7 agree_ideal1 =~ bf06_57_t1 =~    lambda12    0.496    0.0367  0.480 
 8 agree_ideal1 =~ bf06_22_t1 =~    lambda5    -0.492    0.0370 -0.473 
 9 agree_ideal1 =~ bf06_42_t1 =~    lambda9    -0.462    0.0436 -0.386 
10 agree_ideal1 =~ bf06_52_t1 =~    lambda11    0.452    0.0244  0.628 
11 agree_ideal1 =~ bf06_07_t1 =~    lambda2     0.365    0.0230  0.551 
12 agree_ideal1 =~ bf06_17_t1 =~    lambda4    -0.143    0.0594 -0.0909

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf06_47_t1_r = bf06_47_t1,
         bf06_37_t1_r = bf06_37_t1,
         bf06_22_t1_r = bf06_22_t1,
         bf06_12_t1_r = bf06_12_t1,
         bf06_42_t1_r = bf06_42_t1,
         bf06_17_t1_r = bf06_17_t1,
         bf06_47_t2_r = bf06_47_t2,
         bf06_37_t2_r = bf06_37_t2,
         bf06_22_t2_r = bf06_22_t2,
         bf06_12_t2_r = bf06_12_t2,
         bf06_42_t2_r = bf06_42_t2,
         bf06_17_t2_r = bf06_17_t2,
         bf06_47_t3_r = bf06_47_t3,
         bf06_37_t3_r = bf06_37_t3,
         bf06_22_t3_r = bf06_22_t3,
         bf06_12_t3_r = bf06_12_t3,
         bf06_42_t3_r = bf06_42_t3,
         bf06_17_t3_r = bf06_17_t3) %>% 
  mutate(across(c(bf06_47_t1_r, bf06_37_t1_r, bf06_22_t1_r, bf06_12_t1_r, bf06_42_t1_r, bf06_17_t1_r, 
                  bf06_47_t2_r, bf06_37_t2_r, bf06_22_t2_r, bf06_12_t2_r, bf06_42_t2_r, bf06_17_t2_r, 
                  bf06_47_t3_r, bf06_37_t3_r, bf06_22_t3_r, bf06_12_t3_r, bf06_42_t3_r, bf06_17_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(agree_ideal_par1_t1 = rowMeans(across(c(bf06_47_t1_r, bf06_32_t1, bf06_42_t1_r, bf06_17_t1_r)), na.rm=T),
         agree_ideal_par2_t1 = rowMeans(across(c(bf06_27_t1, bf06_37_t1_r, bf06_22_t1_r, bf06_07_t1)), na.rm=T),
         agree_ideal_par3_t1 = rowMeans(across(c(bf06_02_t1, bf06_12_t1_r, bf06_57_t1, bf06_52_t1)), na.rm=T),
         agree_ideal_par1_t2 = rowMeans(across(c(bf06_47_t2_r, bf06_32_t2, bf06_42_t2_r, bf06_17_t2_r)), na.rm=T),
         agree_ideal_par2_t2 = rowMeans(across(c(bf06_27_t2, bf06_37_t2_r, bf06_22_t2_r, bf06_07_t2)), na.rm=T),
         agree_ideal_par3_t2 = rowMeans(across(c(bf06_02_t2, bf06_12_t2_r, bf06_57_t2, bf06_52_t2)), na.rm=T),
         agree_ideal_par1_t3 = rowMeans(across(c(bf06_47_t3_r, bf06_32_t3, bf06_42_t3_r, bf06_17_t3_r)), na.rm=T),
         agree_ideal_par2_t3 = rowMeans(across(c(bf06_27_t3, bf06_37_t3_r, bf06_22_t3_r, bf06_07_t3)), na.rm=T),
         agree_ideal_par3_t3 = rowMeans(across(c(bf06_02_t3, bf06_12_t3_r, bf06_57_t3, bf06_52_t3)), na.rm=T))

3.2.5 Conscientiousness - current self

Check CFA item loadings at T1

cfa_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*bf05_03_t1 + lambda1*bf05_03_t1 + lambda2*bf05_08_t1 + lambda3*bf05_13_t1 + lambda4*bf05_18_t1 + lambda5*bf05_23_t1 + lambda6*bf05_28_t1 + lambda7*bf05_33_t1 + lambda8*bf05_38_t1 + lambda9*bf05_43_t1 + lambda10*bf05_48_t1 + lambda11*bf05_53_t1 + lambda12*bf05_58_t1
# Intercepts
bf05_03_t1 ~ i1*1
bf05_08_t1 ~ 1
bf05_13_t1 ~ 1
bf05_18_t1 ~ 1
bf05_23_t1 ~ 1
bf05_28_t1 ~ 1
bf05_33_t1 ~ 1
bf05_38_t1 ~ 1
bf05_43_t1 ~ 1
bf05_48_t1 ~ 1
bf05_53_t1 ~ 1
bf05_58_t1 ~ 1

# Unique Variances
bf05_03_t1 ~~ bf05_03_t1
bf05_08_t1 ~~ bf05_08_t1
bf05_13_t1 ~~ bf05_13_t1
bf05_18_t1 ~~ bf05_18_t1
bf05_23_t1 ~~ bf05_23_t1
bf05_28_t1 ~~ bf05_28_t1
bf05_33_t1 ~~ bf05_33_t1
bf05_38_t1 ~~ bf05_38_t1
bf05_43_t1 ~~ bf05_43_t1
bf05_48_t1 ~~ bf05_48_t1
bf05_53_t1 ~~ bf05_53_t1
bf05_58_t1 ~~ bf05_58_t1

# Latent Variable Means
consc_curr1 ~ 0*1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
'
fit_cfa_consc_curr <- cfa(cfa_consc_curr, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_consc_curr, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 39 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         4            

Model Test User Model:
                                                      
  Test statistic                               801.533
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              3586.088
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.788
  Tucker-Lewis Index (TLI)                       0.740
                                                      
  Robust Comparative Fit Index (CFI)             0.788
  Robust Tucker-Lewis Index (TLI)                0.740

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14696.583
  Loglikelihood unrestricted model (H1)     -14295.816
                                                      
  Akaike (AIC)                               29465.166
  Bayesian (BIC)                             29635.910
  Sample-size adjusted Bayesian (SABIC)      29521.584

Root Mean Square Error of Approximation:

  RMSEA                                          0.128
  90 Percent confidence interval - lower         0.120
  90 Percent confidence interval - upper         0.136
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.128
  90 Percent confidence interval - lower         0.120
  90 Percent confidence interval - upper         0.136
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.073

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  consc_curr1 =~                                      
    b05_03_ (lmb1)    1.014    0.044   23.242    0.000
    b05_08_ (lmb2)    0.808    0.042   19.245    0.000
    b05_13_ (lmb3)   -0.380    0.039   -9.805    0.000
    b05_18_ (lmb4)   -0.733    0.037  -19.560    0.000
    b05_23_ (lmb5)    0.801    0.043   18.440    0.000
    b05_28_ (lmb6)    0.720    0.043   16.786    0.000
    b05_33_ (lmb7)   -0.793    0.037  -21.311    0.000
    b05_38_ (lmb8)   -0.637    0.033  -19.029    0.000
    b05_43_ (lmb9)   -0.470    0.034  -13.894    0.000
    b05_48_ (lm10)    0.719    0.039   18.599    0.000
    b05_53_ (lm11)   -0.634    0.037  -17.019    0.000
    b05_58_ (lm12)    0.684    0.044   15.680    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_03_1 (i1)    2.894    0.048   60.442    0.000
   .bf05_08_1         3.440    0.044   78.102    0.000
   .bf05_13_1         3.625    0.037   97.459    0.000
   .bf05_18_1         3.576    0.039   90.816    0.000
   .bf05_23_1         3.366    0.045   74.573    0.000
   .bf05_28_1         2.879    0.044   65.754    0.000
   .bf05_33_1         3.409    0.040   85.611    0.000
   .bf05_38_1         3.703    0.035  106.023    0.000
   .bf05_43_1         3.986    0.033  119.068    0.000
   .bf05_48_1         2.094    0.040   52.070    0.000
   .bf05_53_1         3.775    0.038   99.069    0.000
   .bf05_58_1         2.769    0.044   62.917    0.000
    cnsc_crr1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_03_t1        0.915    0.054   17.080    0.000
   .bf05_08_t1        0.992    0.054   18.527    0.000
   .bf05_13_t1        1.028    0.051   20.118    0.000
   .bf05_18_t1        0.776    0.042   18.328    0.000
   .bf05_23_t1        1.085    0.058   18.700    0.000
   .bf05_28_t1        1.105    0.058   19.059    0.000
   .bf05_33_t1        0.714    0.040   17.661    0.000
   .bf05_38_t1        0.629    0.034   18.474    0.000
   .bf05_43_t1        0.729    0.037   19.538    0.000
   .bf05_48_t1        0.854    0.046   18.661    0.000
   .bf05_53_t1        0.829    0.044   19.001    0.000
   .bf05_58_t1        1.174    0.061   19.285    0.000
    consc_curr1       1.000                           
tidy(fit_cfa_consc_curr) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                      op    label    estimate std.error std.all
   <chr>                     <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 consc_curr1 =~ bf05_03_t1 =~    lambda1     1.01     0.0436   0.727
 2 consc_curr1 =~ bf05_08_t1 =~    lambda2     0.808    0.0420   0.630
 3 consc_curr1 =~ bf05_23_t1 =~    lambda5     0.801    0.0435   0.610
 4 consc_curr1 =~ bf05_33_t1 =~    lambda7    -0.793    0.0372  -0.684
 5 consc_curr1 =~ bf05_18_t1 =~    lambda4    -0.733    0.0375  -0.640
 6 consc_curr1 =~ bf05_28_t1 =~    lambda6     0.720    0.0429   0.565
 7 consc_curr1 =~ bf05_48_t1 =~    lambda10    0.719    0.0386   0.614
 8 consc_curr1 =~ bf05_58_t1 =~    lambda12    0.684    0.0436   0.534
 9 consc_curr1 =~ bf05_38_t1 =~    lambda8    -0.637    0.0335  -0.626
10 consc_curr1 =~ bf05_53_t1 =~    lambda11   -0.634    0.0373  -0.572
11 consc_curr1 =~ bf05_43_t1 =~    lambda9    -0.470    0.0339  -0.483
12 consc_curr1 =~ bf05_13_t1 =~    lambda3    -0.380    0.0387  -0.351

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf05_03_t1_r = bf05_03_t1,
         bf05_23_t1_r = bf05_23_t1,
         bf05_48_t1_r = bf05_48_t1,
         bf05_08_t1_r = bf05_08_t1,
         bf05_28_t1_r = bf05_28_t1,
         bf05_58_t1_r = bf05_58_t1,
         bf05_03_t2_r = bf05_03_t2,
         bf05_23_t2_r = bf05_23_t2,
         bf05_48_t2_r = bf05_48_t2,
         bf05_08_t2_r = bf05_08_t2,
         bf05_28_t2_r = bf05_28_t2,
         bf05_58_t2_r = bf05_58_t2,
         bf05_03_t3_r = bf05_03_t3,
         bf05_23_t3_r = bf05_23_t3,
         bf05_48_t3_r = bf05_48_t3,
         bf05_08_t3_r = bf05_08_t3,
         bf05_28_t3_r = bf05_28_t3,
         bf05_58_t3_r = bf05_58_t3) %>% 
  mutate(across(c(bf05_03_t1_r, bf05_23_t1_r, bf05_48_t1_r, bf05_08_t1_r, bf05_28_t1_r, bf05_58_t1_r,
                  bf05_03_t2_r, bf05_23_t2_r, bf05_48_t2_r, bf05_08_t2_r, bf05_28_t2_r, bf05_58_t2_r,
                  bf05_03_t3_r, bf05_23_t3_r, bf05_48_t3_r, bf05_08_t3_r, bf05_28_t3_r, bf05_58_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(consc_curr_par1_t1 = rowMeans(across(c(bf05_03_t1_r, bf05_28_t1_r, bf05_38_t1, bf05_13_t1)), na.rm=T),
         consc_curr_par2_t1 = rowMeans(across(c(bf05_08_t1_r, bf05_18_t1, bf05_58_t1_r, bf05_43_t1)), na.rm=T),
         consc_curr_par3_t1 = rowMeans(across(c(bf05_23_t1_r, bf05_33_t1, bf05_48_t1_r, bf05_53_t1)), na.rm=T),
         consc_curr_par1_t2 = rowMeans(across(c(bf05_03_t2_r, bf05_28_t2_r, bf05_38_t2, bf05_13_t2)), na.rm=T),
         consc_curr_par2_t2 = rowMeans(across(c(bf05_08_t2_r, bf05_18_t2, bf05_58_t2_r, bf05_43_t2)), na.rm=T),
         consc_curr_par3_t2 = rowMeans(across(c(bf05_23_t2_r, bf05_33_t2, bf05_48_t2_r, bf05_53_t2)), na.rm=T),
         consc_curr_par1_t3 = rowMeans(across(c(bf05_03_t3_r, bf05_28_t3_r, bf05_38_t3, bf05_13_t3)), na.rm=T),
         consc_curr_par2_t3 = rowMeans(across(c(bf05_08_t3_r, bf05_18_t3, bf05_58_t3_r, bf05_43_t3)), na.rm=T),
         consc_curr_par3_t3 = rowMeans(across(c(bf05_23_t3_r, bf05_33_t3, bf05_48_t3_r, bf05_53_t3)), na.rm=T))

3.2.6 Conscientiousness - ideal self

Check CFA item loadings at T1

cfa_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*bf06_03_t1 + lambda1*bf06_03_t1 + lambda2*bf06_08_t1 + lambda3*bf06_13_t1 + lambda4*bf06_18_t1 + lambda5*bf06_23_t1 + lambda6*bf06_28_t1 + lambda7*bf06_33_t1 + lambda8*bf06_38_t1 + lambda9*bf06_43_t1 + lambda10*bf06_48_t1 + lambda11*bf06_53_t1 + lambda12*bf06_58_t1
# Intercepts
bf06_03_t1 ~ i1*1
bf06_08_t1 ~ 1
bf06_13_t1 ~ 1
bf06_18_t1 ~ 1
bf06_23_t1 ~ 1
bf06_28_t1 ~ 1
bf06_33_t1 ~ 1
bf06_38_t1 ~ 1
bf06_43_t1 ~ 1
bf06_48_t1 ~ 1
bf06_53_t1 ~ 1
bf06_58_t1 ~ 1

# Unique Variances
bf06_03_t1 ~~ bf06_03_t1
bf06_08_t1 ~~ bf06_08_t1
bf06_13_t1 ~~ bf06_13_t1
bf06_18_t1 ~~ bf06_18_t1
bf06_23_t1 ~~ bf06_23_t1
bf06_28_t1 ~~ bf06_28_t1
bf06_33_t1 ~~ bf06_33_t1
bf06_38_t1 ~~ bf06_38_t1
bf06_43_t1 ~~ bf06_43_t1
bf06_48_t1 ~~ bf06_48_t1
bf06_53_t1 ~~ bf06_53_t1
bf06_58_t1 ~~ bf06_58_t1

# Latent Variable Means
consc_ideal1 ~ 0*1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
'
fit_cfa_consc_ideal <- cfa(cfa_consc_ideal, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_consc_ideal, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 41 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         5            

Model Test User Model:
                                                      
  Test statistic                               261.132
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2186.521
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.902
  Tucker-Lewis Index (TLI)                       0.881
                                                      
  Robust Comparative Fit Index (CFI)             0.902
  Robust Tucker-Lewis Index (TLI)                0.880

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -11827.022
  Loglikelihood unrestricted model (H1)     -11696.456
                                                      
  Akaike (AIC)                               23726.045
  Bayesian (BIC)                             23896.788
  Sample-size adjusted Bayesian (SABIC)      23782.463

Root Mean Square Error of Approximation:

  RMSEA                                          0.067
  90 Percent confidence interval - lower         0.059
  90 Percent confidence interval - upper         0.076
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    0.005
                                                      
  Robust RMSEA                                   0.067
  90 Percent confidence interval - lower         0.059
  90 Percent confidence interval - upper         0.076
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             0.006

Standardized Root Mean Square Residual:

  SRMR                                           0.044

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  consc_ideal1 =~                                     
    b06_03_ (lmb1)    0.441    0.042   10.435    0.000
    b06_08_ (lmb2)    0.412    0.032   12.845    0.000
    b06_13_ (lmb3)   -0.368    0.042   -8.845    0.000
    b06_18_ (lmb4)   -0.417    0.028  -14.929    0.000
    b06_23_ (lmb5)    0.451    0.029   15.561    0.000
    b06_28_ (lmb6)    0.577    0.035   16.264    0.000
    b06_33_ (lmb7)   -0.403    0.026  -15.487    0.000
    b06_38_ (lmb8)   -0.445    0.023  -19.306    0.000
    b06_43_ (lmb9)   -0.419    0.025  -16.913    0.000
    b06_48_ (lm10)    0.419    0.027   15.427    0.000
    b06_53_ (lm11)   -0.433    0.021  -20.174    0.000
    b06_58_ (lm12)    0.494    0.034   14.373    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_03_1 (i1)    1.718    0.040   42.978    0.000
   .bf06_08_1         1.606    0.031   51.992    0.000
   .bf06_13_1         4.196    0.039  107.674    0.000
   .bf06_18_1         4.352    0.027  158.625    0.000
   .bf06_23_1         1.488    0.029   51.993    0.000
   .bf06_28_1         1.857    0.035   52.569    0.000
   .bf06_33_1         4.460    0.026  173.589    0.000
   .bf06_38_1         4.642    0.024  195.735    0.000
   .bf06_43_1         4.565    0.025  183.655    0.000
   .bf06_48_1         1.378    0.027   51.299    0.000
   .bf06_53_1         4.632    0.022  207.973    0.000
   .bf06_58_1         1.775    0.034   52.825    0.000
    consc_dl1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_03_t1        1.157    0.058   19.844    0.000
   .bf06_08_t1        0.637    0.033   19.365    0.000
   .bf06_13_t1        1.151    0.057   20.076    0.000
   .bf06_18_t1        0.463    0.024   18.963    0.000
   .bf06_23_t1        0.489    0.026   18.752    0.000
   .bf06_28_t1        0.723    0.039   18.580    0.000
   .bf06_33_t1        0.396    0.021   18.785    0.000
   .bf06_38_t1        0.278    0.016   17.526    0.000
   .bf06_43_t1        0.347    0.019   18.385    0.000
   .bf06_48_t1        0.435    0.023   18.877    0.000
   .bf06_53_t1        0.232    0.014   17.105    0.000
   .bf06_58_t1        0.711    0.037   19.097    0.000
    consc_ideal1      1.000                           
tidy(fit_cfa_consc_ideal) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                       op    label    estimate std.error std.all
   <chr>                      <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 consc_ideal1 =~ bf06_28_t1 =~    lambda6     0.577    0.0355   0.562
 2 consc_ideal1 =~ bf06_58_t1 =~    lambda12    0.494    0.0344   0.505
 3 consc_ideal1 =~ bf06_23_t1 =~    lambda5     0.451    0.0290   0.542
 4 consc_ideal1 =~ bf06_38_t1 =~    lambda8    -0.445    0.0231  -0.645
 5 consc_ideal1 =~ bf06_03_t1 =~    lambda1     0.441    0.0422   0.379
 6 consc_ideal1 =~ bf06_53_t1 =~    lambda11   -0.433    0.0215  -0.668
 7 consc_ideal1 =~ bf06_43_t1 =~    lambda9    -0.419    0.0248  -0.580
 8 consc_ideal1 =~ bf06_48_t1 =~    lambda10    0.419    0.0272   0.536
 9 consc_ideal1 =~ bf06_18_t1 =~    lambda4    -0.417    0.0279  -0.522
10 consc_ideal1 =~ bf06_08_t1 =~    lambda2     0.412    0.0321   0.459
11 consc_ideal1 =~ bf06_33_t1 =~    lambda7    -0.403    0.0260  -0.539
12 consc_ideal1 =~ bf06_13_t1 =~    lambda3    -0.368    0.0416  -0.324

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf06_03_t1_r = bf06_03_t1,
         bf06_23_t1_r = bf06_23_t1,
         bf06_48_t1_r = bf06_48_t1,
         bf06_08_t1_r = bf06_08_t1,
         bf06_28_t1_r = bf06_28_t1,
         bf06_58_t1_r = bf06_58_t1,
         bf06_03_t2_r = bf06_03_t2,
         bf06_23_t2_r = bf06_23_t2,
         bf06_48_t2_r = bf06_48_t2,
         bf06_08_t2_r = bf06_08_t2,
         bf06_28_t2_r = bf06_28_t2,
         bf06_58_t2_r = bf06_58_t2,
         bf06_03_t3_r = bf06_03_t3,
         bf06_23_t3_r = bf06_23_t3,
         bf06_48_t3_r = bf06_48_t3,
         bf06_08_t3_r = bf06_08_t3,
         bf06_28_t3_r = bf06_28_t3,
         bf06_58_t3_r = bf06_58_t3) %>% 
  mutate(across(c(bf06_03_t1_r, bf06_23_t1_r, bf06_48_t1_r, bf06_08_t1_r, bf06_28_t1_r, bf06_58_t1_r,
                  bf06_03_t2_r, bf06_23_t2_r, bf06_48_t2_r, bf06_08_t2_r, bf06_28_t2_r, bf06_58_t2_r,
                  bf06_03_t3_r, bf06_23_t3_r, bf06_48_t3_r, bf06_08_t3_r, bf06_28_t3_r, bf06_58_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(consc_ideal_par1_t1 = rowMeans(across(c(bf06_28_t1_r, bf06_53_t1, bf06_18_t1, bf06_13_t1)), na.rm=T),
         consc_ideal_par2_t1 = rowMeans(across(c(bf06_58_t1_r, bf06_03_t1_r, bf06_48_t1_r, bf06_33_t1)), na.rm=T),
         consc_ideal_par3_t1 = rowMeans(across(c(bf06_23_t1_r, bf06_38_t1, bf06_43_t1, bf06_08_t1_r)), na.rm=T),
         consc_ideal_par1_t2 = rowMeans(across(c(bf06_28_t2_r, bf06_53_t2, bf06_18_t2, bf06_13_t2)), na.rm=T),
         consc_ideal_par2_t2 = rowMeans(across(c(bf06_58_t2_r, bf06_03_t2_r, bf06_48_t2_r, bf06_33_t2)), na.rm=T),
         consc_ideal_par3_t2 = rowMeans(across(c(bf06_23_t2_r, bf06_38_t2, bf06_43_t2, bf06_08_t2_r)), na.rm=T),
         consc_ideal_par1_t3 = rowMeans(across(c(bf06_28_t3_r, bf06_53_t3, bf06_18_t3, bf06_13_t3)), na.rm=T),
         consc_ideal_par2_t3 = rowMeans(across(c(bf06_58_t3_r, bf06_03_t3_r, bf06_48_t3_r, bf06_33_t3)), na.rm=T),
         consc_ideal_par3_t3 = rowMeans(across(c(bf06_23_t3_r, bf06_38_t3, bf06_43_t3, bf06_08_t3_r)), na.rm=T))

3.2.7 Neuroticism - current self

Check CFA item loadings at T1

cfa_neuro_curr <- '
#| warning: false

# Define the latent factors
neuro_curr1 =~ NA*bf05_04_t1 + lambda1*bf05_04_t1 + lambda2*bf05_09_t1 + lambda3*bf05_14_t1 + lambda4*bf05_19_t1 + lambda5*bf05_24_t1 + lambda6*bf05_29_t1 + lambda7*bf05_34_t1 + lambda8*bf05_39_t1 + lambda9*bf05_44_t1 + lambda10*bf05_49_t1 + lambda11*bf05_54_t1 + lambda12*bf05_59_t1

# Intercepts
bf05_04_t1 ~ i1*1
bf05_09_t1 ~ 1
bf05_14_t1 ~ 1
bf05_19_t1 ~ 1
bf05_24_t1 ~ 1
bf05_29_t1 ~ 1
bf05_34_t1 ~ 1
bf05_39_t1 ~ 1
bf05_44_t1 ~ 1
bf05_49_t1 ~ 1
bf05_54_t1 ~ 1
bf05_59_t1 ~ 1

# Unique Variances
bf05_04_t1 ~~ bf05_04_t1
bf05_09_t1 ~~ bf05_09_t1
bf05_14_t1 ~~ bf05_14_t1
bf05_19_t1 ~~ bf05_19_t1
bf05_24_t1 ~~ bf05_24_t1
bf05_29_t1 ~~ bf05_29_t1
bf05_34_t1 ~~ bf05_34_t1
bf05_39_t1 ~~ bf05_39_t1
bf05_44_t1 ~~ bf05_44_t1
bf05_49_t1 ~~ bf05_49_t1
bf05_54_t1 ~~ bf05_54_t1
bf05_59_t1 ~~ bf05_59_t1

# Latent Variable Means
neuro_curr1 ~ 0*1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
'
fit_cfa_neuro_curr <- cfa(cfa_neuro_curr, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan WARNING: some cases are empty and will be ignored:
  611
summary(fit_cfa_neuro_curr, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 35 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         4            

Model Test User Model:
                                                      
  Test statistic                               680.474
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              4495.728
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.859
  Tucker-Lewis Index (TLI)                       0.827
                                                      
  Robust Comparative Fit Index (CFI)             0.858
  Robust Tucker-Lewis Index (TLI)                0.827

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14759.163
  Loglikelihood unrestricted model (H1)     -14418.926
                                                      
  Akaike (AIC)                               29590.325
  Bayesian (BIC)                             29761.069
  Sample-size adjusted Bayesian (SABIC)      29646.744

Root Mean Square Error of Approximation:

  RMSEA                                          0.117
  90 Percent confidence interval - lower         0.109
  90 Percent confidence interval - upper         0.125
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.117
  90 Percent confidence interval - lower         0.109
  90 Percent confidence interval - upper         0.125
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.055

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  neuro_curr1 =~                                      
    b05_04_ (lmb1)    0.904    0.041   22.165    0.000
    b05_09_ (lmb2)    0.758    0.039   19.533    0.000
    b05_14_ (lmb3)   -0.901    0.042  -21.239    0.000
    b05_19_ (lmb4)   -0.624    0.035  -17.726    0.000
    b05_24_ (lmb5)    0.755    0.040   18.667    0.000
    b05_29_ (lmb6)    0.906    0.038   23.588    0.000
    b05_34_ (lmb7)   -0.806    0.037  -22.003    0.000
    b05_39_ (lmb8)   -0.921    0.040  -23.031    0.000
    b05_44_ (lmb9)    0.806    0.039   20.762    0.000
    b05_49_ (lm10)    0.623    0.041   15.315    0.000
    b05_54_ (lm11)   -0.996    0.043  -23.246    0.000
    b05_59_ (lm12)   -0.814    0.042  -19.249    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_04_1 (i1)    2.755    0.045   61.511    0.000
   .bf05_09_1         2.933    0.041   70.774    0.000
   .bf05_14_1         3.152    0.046   68.350    0.000
   .bf05_19_1         3.588    0.037   97.236    0.000
   .bf05_24_1         3.017    0.043   70.486    0.000
   .bf05_29_1         2.977    0.043   69.428    0.000
   .bf05_34_1         3.879    0.040   96.548    0.000
   .bf05_39_1         3.303    0.044   74.777    0.000
   .bf05_44_1         3.210    0.042   76.710    0.000
   .bf05_49_1         2.342    0.042   56.155    0.000
   .bf05_54_1         3.249    0.047   68.523    0.000
   .bf05_59_1         3.128    0.045   69.737    0.000
    neur_crr1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_04_t1        0.882    0.048   18.423    0.000
   .bf05_09_t1        0.880    0.046   19.093    0.000
   .bf05_14_t1        0.992    0.053   18.707    0.000
   .bf05_19_t1        0.765    0.039   19.447    0.000
   .bf05_24_t1        0.982    0.051   19.257    0.000
   .bf05_29_t1        0.736    0.041   17.947    0.000
   .bf05_34_t1        0.719    0.039   18.497    0.000
   .bf05_39_t1        0.806    0.045   17.863    0.000
   .bf05_44_t1        0.834    0.045   18.629    0.000
   .bf05_49_t1        1.084    0.055   19.757    0.000
   .bf05_54_t1        0.915    0.052   17.759    0.000
   .bf05_59_t1        1.042    0.055   18.985    0.000
    neuro_curr1       1.000                           
tidy(fit_cfa_neuro_curr) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                      op    label    estimate std.error std.all
   <chr>                     <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 neuro_curr1 =~ bf05_54_t1 =~    lambda11   -0.996    0.0428  -0.721
 2 neuro_curr1 =~ bf05_39_t1 =~    lambda8    -0.921    0.0400  -0.716
 3 neuro_curr1 =~ bf05_29_t1 =~    lambda6     0.906    0.0384   0.726
 4 neuro_curr1 =~ bf05_04_t1 =~    lambda1     0.904    0.0408   0.693
 5 neuro_curr1 =~ bf05_14_t1 =~    lambda3    -0.901    0.0424  -0.671
 6 neuro_curr1 =~ bf05_59_t1 =~    lambda12   -0.814    0.0423  -0.624
 7 neuro_curr1 =~ bf05_34_t1 =~    lambda7    -0.806    0.0366  -0.689
 8 neuro_curr1 =~ bf05_44_t1 =~    lambda9     0.806    0.0388   0.662
 9 neuro_curr1 =~ bf05_09_t1 =~    lambda2     0.758    0.0388   0.628
10 neuro_curr1 =~ bf05_24_t1 =~    lambda5     0.755    0.0405   0.606
11 neuro_curr1 =~ bf05_19_t1 =~    lambda4    -0.624    0.0352  -0.581
12 neuro_curr1 =~ bf05_49_t1 =~    lambda10    0.623    0.0407   0.514

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf05_29_t1_r = bf05_29_t1,
         bf05_04_t1_r = bf05_04_t1,
         bf05_24_t1_r = bf05_24_t1,
         bf05_44_t1_r = bf05_44_t1,
         bf05_09_t1_r = bf05_09_t1,
         bf05_49_t1_r = bf05_49_t1,
         bf05_29_t2_r = bf05_29_t2,
         bf05_04_t2_r = bf05_04_t2,
         bf05_24_t2_r = bf05_24_t2,
         bf05_44_t2_r = bf05_44_t2,
         bf05_09_t2_r = bf05_09_t2,
         bf05_49_t2_r = bf05_49_t2,
         bf05_29_t3_r = bf05_29_t3,
         bf05_04_t3_r = bf05_04_t3,
         bf05_24_t3_r = bf05_24_t3,
         bf05_44_t3_r = bf05_44_t3,
         bf05_09_t3_r = bf05_09_t3,
         bf05_49_t3_r = bf05_49_t3) %>% 
  mutate(across(c(bf05_29_t1_r, bf05_04_t1_r, bf05_24_t1_r, bf05_44_t1_r, bf05_09_t1_r, bf05_49_t1_r, 
                  bf05_29_t2_r, bf05_04_t2_r, bf05_24_t2_r, bf05_44_t2_r, bf05_09_t2_r, bf05_49_t2_r, 
                  bf05_29_t3_r, bf05_04_t3_r, bf05_24_t3_r, bf05_44_t3_r, bf05_09_t3_r, bf05_49_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(neuro_curr_par1_t1 = rowMeans(across(c(bf05_54_t1, bf05_59_t1, bf05_09_t1_r, bf05_49_t1_r)), na.rm=T),
         neuro_curr_par2_t1 = rowMeans(across(c(bf05_39_t1, bf05_14_t1, bf05_44_t1_r, bf05_19_t1)), na.rm=T),
         neuro_curr_par3_t1 = rowMeans(across(c(bf05_29_t1_r, bf05_04_t1_r, bf05_34_t1, bf05_24_t1_r)), na.rm=T),
         neuro_curr_par1_t2 = rowMeans(across(c(bf05_54_t2, bf05_59_t2, bf05_09_t2_r, bf05_49_t2_r)), na.rm=T),
         neuro_curr_par2_t2 = rowMeans(across(c(bf05_39_t2, bf05_14_t2, bf05_44_t2_r, bf05_19_t2)), na.rm=T),
         neuro_curr_par3_t2 = rowMeans(across(c(bf05_29_t2_r, bf05_04_t2_r, bf05_34_t2, bf05_24_t2_r)), na.rm=T),
         neuro_curr_par1_t3 = rowMeans(across(c(bf05_54_t3, bf05_59_t3, bf05_09_t3_r, bf05_49_t3_r)), na.rm=T),
         neuro_curr_par2_t3 = rowMeans(across(c(bf05_39_t3, bf05_14_t3, bf05_44_t3_r, bf05_19_t3)), na.rm=T),
         neuro_curr_par3_t3 = rowMeans(across(c(bf05_29_t3_r, bf05_04_t3_r, bf05_34_t3, bf05_24_t3_r)), na.rm=T))

3.2.8 Neuroticism - ideal self

Check CFA item loadings at T1

cfa_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*bf06_04_t1 + lambda1*bf06_04_t1 + lambda2*bf06_09_t1 + lambda3*bf06_14_t1 + lambda4*bf06_19_t1 + lambda5*bf06_24_t1 + lambda6*bf06_29_t1 + lambda7*bf06_34_t1 + lambda8*bf06_39_t1 + lambda9*bf06_44_t1 + lambda10*bf06_49_t1 + lambda11*bf06_54_t1 + lambda12*bf06_59_t1

# Intercepts
bf06_04_t1 ~ i1*1
bf06_09_t1 ~ 1
bf06_14_t1 ~ 1
bf06_19_t1 ~ 1
bf06_24_t1 ~ 1
bf06_29_t1 ~ 1
bf06_34_t1 ~ 1
bf06_39_t1 ~ 1
bf06_44_t1 ~ 1
bf06_49_t1 ~ 1
bf06_54_t1 ~ 1
bf06_59_t1 ~ 1

# Unique Variances
bf06_04_t1 ~~ bf06_04_t1
bf06_09_t1 ~~ bf06_09_t1
bf06_14_t1 ~~ bf06_14_t1
bf06_19_t1 ~~ bf06_19_t1
bf06_24_t1 ~~ bf06_24_t1
bf06_29_t1 ~~ bf06_29_t1
bf06_34_t1 ~~ bf06_34_t1
bf06_39_t1 ~~ bf06_39_t1
bf06_44_t1 ~~ bf06_44_t1
bf06_49_t1 ~~ bf06_49_t1
bf06_54_t1 ~~ bf06_54_t1
bf06_59_t1 ~~ bf06_59_t1

# Latent Variable Means
neuro_ideal1 ~ 0*1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
'
fit_cfa_neuro_ideal <- cfa(cfa_neuro_ideal, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_neuro_ideal, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 41 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         5            

Model Test User Model:
                                                      
  Test statistic                               273.694
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2229.774
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.898
  Tucker-Lewis Index (TLI)                       0.876
                                                      
  Robust Comparative Fit Index (CFI)             0.898
  Robust Tucker-Lewis Index (TLI)                0.876

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -12149.997
  Loglikelihood unrestricted model (H1)     -12013.150
                                                      
  Akaike (AIC)                               24371.994
  Bayesian (BIC)                             24542.738
  Sample-size adjusted Bayesian (SABIC)      24428.413

Root Mean Square Error of Approximation:

  RMSEA                                          0.069
  90 Percent confidence interval - lower         0.061
  90 Percent confidence interval - upper         0.078
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    0.016
                                                      
  Robust RMSEA                                   0.069
  90 Percent confidence interval - lower         0.061
  90 Percent confidence interval - upper         0.078
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             0.017

Standardized Root Mean Square Residual:

  SRMR                                           0.042

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  neuro_ideal1 =~                                     
    b06_04_ (lmb1)    0.311    0.027   11.743    0.000
    b06_09_ (lmb2)    0.430    0.026   16.554    0.000
    b06_14_ (lmb3)   -0.492    0.028  -17.268    0.000
    b06_19_ (lmb4)   -0.525    0.032  -16.181    0.000
    b06_24_ (lmb5)    0.355    0.025   14.392    0.000
    b06_29_ (lmb6)    0.409    0.039   10.403    0.000
    b06_34_ (lmb7)   -0.548    0.032  -16.987    0.000
    b06_39_ (lmb8)   -0.524    0.027  -19.366    0.000
    b06_44_ (lmb9)    0.462    0.027   16.874    0.000
    b06_49_ (lm10)    0.321    0.051    6.247    0.000
    b06_54_ (lm11)   -0.533    0.026  -20.319    0.000
    b06_59_ (lm12)   -0.479    0.035  -13.698    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_04_1 (i1)    4.549    0.025  178.914    0.000
   .bf06_09_1         4.441    0.026  170.833    0.000
   .bf06_14_1         1.609    0.029   56.032    0.000
   .bf06_19_1         1.985    0.032   61.253    0.000
   .bf06_24_1         4.664    0.024  193.333    0.000
   .bf06_29_1         4.251    0.037  114.255    0.000
   .bf06_34_1         1.816    0.032   55.945    0.000
   .bf06_39_1         1.565    0.028   56.296    0.000
   .bf06_44_1         4.425    0.027  161.125    0.000
   .bf06_49_1         3.816    0.048   80.268    0.000
   .bf06_54_1         1.468    0.027   53.906    0.000
   .bf06_59_1         1.903    0.034   56.042    0.000
    neuro_dl1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_04_t1        0.451    0.023   19.693    0.000
   .bf06_09_t1        0.387    0.021   18.568    0.000
   .bf06_14_t1        0.455    0.025   18.321    0.000
   .bf06_19_t1        0.612    0.033   18.691    0.000
   .bf06_24_t1        0.366    0.019   19.077    0.000
   .bf06_29_t1        1.005    0.051   19.860    0.000
   .bf06_34_t1        0.591    0.032   18.447    0.000
   .bf06_39_t1        0.379    0.022   17.415    0.000
   .bf06_44_t1        0.425    0.023   18.437    0.000
   .bf06_49_t1        1.811    0.089   20.344    0.000
   .bf06_54_t1        0.344    0.020   17.009    0.000
   .bf06_59_t1        0.747    0.039   19.249    0.000
    neuro_ideal1      1.000                           
tidy(fit_cfa_neuro_ideal) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                       op    label    estimate std.error std.all
   <chr>                      <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 neuro_ideal1 =~ bf06_34_t1 =~    lambda7    -0.548    0.0323  -0.581
 2 neuro_ideal1 =~ bf06_54_t1 =~    lambda11   -0.533    0.0262  -0.672
 3 neuro_ideal1 =~ bf06_19_t1 =~    lambda4    -0.525    0.0325  -0.558
 4 neuro_ideal1 =~ bf06_39_t1 =~    lambda8    -0.524    0.0271  -0.648
 5 neuro_ideal1 =~ bf06_14_t1 =~    lambda3    -0.492    0.0285  -0.589
 6 neuro_ideal1 =~ bf06_59_t1 =~    lambda12   -0.479    0.0349  -0.484
 7 neuro_ideal1 =~ bf06_44_t1 =~    lambda9     0.462    0.0274   0.579
 8 neuro_ideal1 =~ bf06_09_t1 =~    lambda2     0.430    0.0260   0.569
 9 neuro_ideal1 =~ bf06_29_t1 =~    lambda6     0.409    0.0393   0.378
10 neuro_ideal1 =~ bf06_24_t1 =~    lambda5     0.355    0.0247   0.506
11 neuro_ideal1 =~ bf06_49_t1 =~    lambda10    0.321    0.0513   0.232
12 neuro_ideal1 =~ bf06_04_t1 =~    lambda1     0.311    0.0265   0.421

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf06_29_t1_r = bf06_29_t1,
         bf06_04_t1_r = bf06_04_t1,
         bf06_24_t1_r = bf06_24_t1,
         bf06_44_t1_r = bf06_44_t1,
         bf06_09_t1_r = bf06_09_t1,
         bf06_49_t1_r = bf06_49_t1,
         bf06_29_t2_r = bf06_29_t2,
         bf06_04_t2_r = bf06_04_t2,
         bf06_24_t2_r = bf06_24_t2,
         bf06_44_t2_r = bf06_44_t2,
         bf06_09_t2_r = bf06_09_t2,
         bf06_49_t2_r = bf06_49_t2,
         bf06_29_t3_r = bf06_29_t3,
         bf06_04_t3_r = bf06_04_t3,
         bf06_24_t3_r = bf06_24_t3,
         bf06_44_t3_r = bf06_44_t3,
         bf06_09_t3_r = bf06_09_t3,
         bf06_49_t3_r = bf06_49_t3) %>% 
  mutate(across(c(bf06_29_t1_r, bf06_04_t1_r, bf06_24_t1_r, bf06_44_t1_r, bf06_09_t1_r, bf06_49_t1_r, 
                  bf06_29_t2_r, bf06_04_t2_r, bf06_24_t2_r, bf06_44_t2_r, bf06_09_t2_r, bf06_49_t2_r, 
                  bf06_29_t3_r, bf06_04_t3_r, bf06_24_t3_r, bf06_44_t3_r, bf06_09_t3_r, bf06_49_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(neuro_ideal_par1_t1 = rowMeans(across(c(bf06_34_t1, bf06_59_t1, bf06_29_t1_r, bf06_04_t1_r)), na.rm=T),
         neuro_ideal_par2_t1 = rowMeans(across(c(bf06_54_t1, bf06_14_t1, bf06_09_t1_r, bf06_49_t1_r)), na.rm=T),
         neuro_ideal_par3_t1 = rowMeans(across(c(bf06_19_t1, bf06_39_t1, bf06_44_t1_r, bf06_24_t1_r)), na.rm=T),
         neuro_ideal_par1_t2 = rowMeans(across(c(bf06_34_t2, bf06_59_t2, bf06_29_t2_r, bf06_04_t2_r)), na.rm=T),
         neuro_ideal_par2_t2 = rowMeans(across(c(bf06_54_t2, bf06_14_t2, bf06_09_t2_r, bf06_49_t2_r)), na.rm=T),
         neuro_ideal_par3_t2 = rowMeans(across(c(bf06_19_t2, bf06_39_t2, bf06_44_t2_r, bf06_24_t2_r)), na.rm=T),
         neuro_ideal_par1_t3 = rowMeans(across(c(bf06_34_t3, bf06_59_t3, bf06_29_t3_r, bf06_04_t3_r)), na.rm=T),
         neuro_ideal_par2_t3 = rowMeans(across(c(bf06_54_t3, bf06_14_t3, bf06_09_t3_r, bf06_49_t3_r)), na.rm=T),
         neuro_ideal_par3_t3 = rowMeans(across(c(bf06_19_t3, bf06_39_t3, bf06_44_t3_r, bf06_24_t3_r)), na.rm=T))

3.2.9 Openness - current self

Check CFA item loadings at T1

cfa_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*bf05_05_t1 + lambda1*bf05_05_t1 + lambda2*bf05_10_t1 + lambda3*bf05_15_t1 + lambda4*bf05_20_t1 + lambda5*bf05_25_t1 + lambda6*bf05_30_t1 + lambda7*bf05_35_t1 + lambda8*bf05_40_t1 + lambda9*bf05_45_t1 + lambda10*bf05_50_t1 + lambda11*bf05_55_t1 + lambda12*bf05_60_t1

# Intercepts
bf05_05_t1 ~ i1*1
bf05_10_t1 ~ 1
bf05_15_t1 ~ 1
bf05_20_t1 ~ 1
bf05_25_t1 ~ 1
bf05_30_t1 ~ 1
bf05_35_t1 ~ 1
bf05_40_t1 ~ 1
bf05_45_t1 ~ 1
bf05_50_t1 ~ 1
bf05_55_t1 ~ 1
bf05_60_t1 ~ 1

# Unique Variances
bf05_05_t1 ~~ bf05_05_t1
bf05_10_t1 ~~ bf05_10_t1
bf05_15_t1 ~~ bf05_15_t1
bf05_20_t1 ~~ bf05_20_t1
bf05_25_t1 ~~ bf05_25_t1
bf05_30_t1 ~~ bf05_30_t1
bf05_35_t1 ~~ bf05_35_t1
bf05_40_t1 ~~ bf05_40_t1
bf05_45_t1 ~~ bf05_45_t1
bf05_50_t1 ~~ bf05_50_t1
bf05_55_t1 ~~ bf05_55_t1
bf05_60_t1 ~~ bf05_60_t1

# Latent Variable Means
openn_curr1 ~ 0*1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
'
fit_cfa_openn_curr <- cfa(cfa_openn_curr, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_openn_curr, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 37 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           848         849
  Number of missing patterns                         2            

Model Test User Model:
                                                      
  Test statistic                               686.354
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2445.809
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.734
  Tucker-Lewis Index (TLI)                       0.675
                                                      
  Robust Comparative Fit Index (CFI)             0.734
  Robust Tucker-Lewis Index (TLI)                0.675

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -14957.504
  Loglikelihood unrestricted model (H1)     -14614.327
                                                      
  Akaike (AIC)                               29987.007
  Bayesian (BIC)                             30157.751
  Sample-size adjusted Bayesian (SABIC)      30043.426

Root Mean Square Error of Approximation:

  RMSEA                                          0.118
  90 Percent confidence interval - lower         0.110
  90 Percent confidence interval - upper         0.125
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000
                                                      
  Robust RMSEA                                   0.118
  90 Percent confidence interval - lower         0.110
  90 Percent confidence interval - upper         0.126
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.071

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  openn_curr1 =~                                      
    b05_05_ (lmb1)    0.291    0.050    5.788    0.000
    b05_10_ (lmb2)   -0.455    0.033  -13.723    0.000
    b05_15_ (lmb3)   -0.517    0.038  -13.574    0.000
    b05_20_ (lmb4)   -0.756    0.042  -18.203    0.000
    b05_25_ (lmb5)    0.565    0.046   12.321    0.000
    b05_30_ (lmb6)    0.622    0.044   14.134    0.000
    b05_35_ (lmb7)   -0.688    0.037  -18.439    0.000
    b05_40_ (lmb8)   -0.546    0.036  -15.159    0.000
    b05_45_ (lmb9)    0.562    0.042   13.394    0.000
    b05_50_ (lm10)    0.700    0.048   14.469    0.000
    b05_55_ (lm11)    0.623    0.044   14.239    0.000
    b05_60_ (lm12)   -0.597    0.038  -15.746    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_05_1 (i1)    2.927    0.046   63.757    0.000
   .bf05_10_1         4.107    0.032  128.627    0.000
   .bf05_15_1         3.642    0.036  101.863    0.000
   .bf05_20_1         3.862    0.040   95.629    0.000
   .bf05_25_1         2.363    0.043   54.499    0.000
   .bf05_30_1         2.473    0.042   58.767    0.000
   .bf05_35_1         3.999    0.036  109.961    0.000
   .bf05_40_1         3.968    0.035  113.040    0.000
   .bf05_45_1         2.099    0.040   52.442    0.000
   .bf05_50_1         2.399    0.046   51.800    0.000
   .bf05_55_1         2.435    0.042   57.439    0.000
   .bf05_60_1         3.539    0.037   96.935    0.000
    opnn_crr1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf05_05_t1        1.703    0.084   20.359    0.000
   .bf05_10_t1        0.658    0.034   19.091    0.000
   .bf05_15_t1        0.817    0.044   18.616    0.000
   .bf05_20_t1        0.811    0.050   16.084    0.000
   .bf05_25_t1        1.276    0.066   19.321    0.000
   .bf05_30_t1        1.114    0.059   18.722    0.000
   .bf05_35_t1        0.647    0.041   15.919    0.000
   .bf05_40_t1        0.747    0.040   18.676    0.000
   .bf05_45_t1        1.041    0.055   19.015    0.000
   .bf05_50_t1        1.326    0.072   18.546    0.000
   .bf05_55_t1        1.134    0.060   18.955    0.000
   .bf05_60_t1        0.773    0.043   17.908    0.000
    openn_curr1       1.000                           
tidy(fit_cfa_openn_curr) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                      op    label    estimate std.error std.all
   <chr>                     <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 openn_curr1 =~ bf05_20_t1 =~    lambda4    -0.756    0.0416  -0.643
 2 openn_curr1 =~ bf05_50_t1 =~    lambda10    0.700    0.0484   0.520
 3 openn_curr1 =~ bf05_35_t1 =~    lambda7    -0.688    0.0373  -0.650
 4 openn_curr1 =~ bf05_55_t1 =~    lambda11    0.623    0.0438   0.505
 5 openn_curr1 =~ bf05_30_t1 =~    lambda6     0.622    0.0440   0.508
 6 openn_curr1 =~ bf05_60_t1 =~    lambda12   -0.597    0.0379  -0.562
 7 openn_curr1 =~ bf05_25_t1 =~    lambda5     0.565    0.0458   0.447
 8 openn_curr1 =~ bf05_45_t1 =~    lambda9     0.562    0.0420   0.483
 9 openn_curr1 =~ bf05_40_t1 =~    lambda8    -0.546    0.0360  -0.534
10 openn_curr1 =~ bf05_15_t1 =~    lambda3    -0.517    0.0381  -0.496
11 openn_curr1 =~ bf05_10_t1 =~    lambda2    -0.455    0.0332  -0.489
12 openn_curr1 =~ bf05_05_t1 =~    lambda1     0.291    0.0502   0.217

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf05_50_t1_r = bf05_50_t1,
         bf05_55_t1_r = bf05_55_t1,
         bf05_30_t1_r = bf05_30_t1,
         bf05_25_t1_r = bf05_25_t1,
         bf05_45_t1_r = bf05_45_t1,
         bf05_05_t1_r = bf05_05_t1,
         bf05_50_t2_r = bf05_50_t2,
         bf05_55_t2_r = bf05_55_t2,
         bf05_30_t2_r = bf05_30_t2,
         bf05_25_t2_r = bf05_25_t2,
         bf05_45_t2_r = bf05_45_t2,
         bf05_05_t2_r = bf05_05_t2,
         bf05_50_t3_r = bf05_50_t3,
         bf05_55_t3_r = bf05_55_t3,
         bf05_30_t3_r = bf05_30_t3,
         bf05_25_t3_r = bf05_25_t3,
         bf05_45_t3_r = bf05_45_t3,
         bf05_05_t3_r = bf05_05_t3) %>% 
  mutate(across(c(bf05_50_t1_r, bf05_55_t1_r, bf05_30_t1_r, bf05_25_t1_r, bf05_45_t1_r, bf05_05_t1_r,
                  bf05_50_t2_r, bf05_55_t2_r, bf05_30_t2_r, bf05_25_t2_r, bf05_45_t2_r, bf05_05_t2_r,
                  bf05_50_t3_r, bf05_55_t3_r, bf05_30_t3_r, bf05_25_t3_r, bf05_45_t3_r, bf05_05_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(openn_curr_par1_t1 = rowMeans(across(c(bf05_20_t1, bf05_60_t1, bf05_25_t1_r, bf05_05_t1_r)), na.rm=T),
         openn_curr_par2_t1 = rowMeans(across(c(bf05_50_t1_r, bf05_30_t1_r, bf05_45_t1_r, bf05_10_t1)), na.rm=T),
         openn_curr_par3_t1 = rowMeans(across(c(bf05_35_t1, bf05_55_t1_r, bf05_40_t1, bf05_15_t1)), na.rm=T),
         openn_curr_par1_t2 = rowMeans(across(c(bf05_20_t2, bf05_60_t2, bf05_25_t2_r, bf05_05_t2_r)), na.rm=T),
         openn_curr_par2_t2 = rowMeans(across(c(bf05_50_t2_r, bf05_30_t2_r, bf05_45_t2_r, bf05_10_t2)), na.rm=T),
         openn_curr_par3_t2 = rowMeans(across(c(bf05_35_t2, bf05_55_t2_r, bf05_40_t2, bf05_15_t2)), na.rm=T),
         openn_curr_par1_t3 = rowMeans(across(c(bf05_20_t3, bf05_60_t3, bf05_25_t3_r, bf05_05_t3_r)), na.rm=T),
         openn_curr_par2_t3 = rowMeans(across(c(bf05_50_t3_r, bf05_30_t3_r, bf05_45_t3_r, bf05_10_t3)), na.rm=T),
         openn_curr_par3_t3 = rowMeans(across(c(bf05_35_t3, bf05_55_t3_r, bf05_40_t3, bf05_15_t3)), na.rm=T))

3.2.10 Openness - ideal self

Check CFA item loadings at T1

cfa_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*bf06_05_t1 + lambda1*bf06_05_t1 + lambda2*bf06_10_t1 + lambda3*bf06_15_t1 + lambda4*bf06_20_t1 + lambda5*bf06_25_t1 + lambda6*bf06_30_t1 + lambda7*bf06_35_t1 + lambda8*bf06_40_t1 + lambda9*bf06_45_t1 + lambda10*bf06_50_t1 + lambda11*bf06_55_t1 + lambda12*bf06_60_t1

# Intercepts
bf06_05_t1 ~ i1*1
bf06_10_t1 ~ 1
bf06_15_t1 ~ 1
bf06_20_t1 ~ 1
bf06_25_t1 ~ 1
bf06_30_t1 ~ 1
bf06_35_t1 ~ 1
bf06_40_t1 ~ 1
bf06_45_t1 ~ 1
bf06_50_t1 ~ 1
bf06_55_t1 ~ 1
bf06_60_t1 ~ 1

# Unique Variances
bf06_05_t1 ~~ bf06_05_t1
bf06_10_t1 ~~ bf06_10_t1
bf06_15_t1 ~~ bf06_15_t1
bf06_20_t1 ~~ bf06_20_t1
bf06_25_t1 ~~ bf06_25_t1
bf06_30_t1 ~~ bf06_30_t1
bf06_35_t1 ~~ bf06_35_t1
bf06_40_t1 ~~ bf06_40_t1
bf06_45_t1 ~~ bf06_45_t1
bf06_50_t1 ~~ bf06_50_t1
bf06_55_t1 ~~ bf06_55_t1
bf06_60_t1 ~~ bf06_60_t1

# Latent Variable Means
openn_ideal1 ~ 0*1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
'
fit_cfa_openn_ideal <- cfa(cfa_openn_ideal, data = df_sbsa2_wide_pers, mimic = "mplus", missing="ML")
summary(fit_cfa_openn_ideal, fit.measures = TRUE)
lavaan 0.6.15 ended normally after 43 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        36

                                                  Used       Total
  Number of observations                           847         849
  Number of missing patterns                         5            

Model Test User Model:
                                                      
  Test statistic                               460.240
  Degrees of freedom                                54
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2053.128
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.796
  Tucker-Lewis Index (TLI)                       0.750
                                                      
  Robust Comparative Fit Index (CFI)             0.796
  Robust Tucker-Lewis Index (TLI)                0.751

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -13794.655
  Loglikelihood unrestricted model (H1)     -13564.536
                                                      
  Akaike (AIC)                               27661.311
  Bayesian (BIC)                             27832.012
  Sample-size adjusted Bayesian (SABIC)      27717.687

Root Mean Square Error of Approximation:

  RMSEA                                          0.094
  90 Percent confidence interval - lower         0.086
  90 Percent confidence interval - upper         0.102
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    0.998
                                                      
  Robust RMSEA                                   0.095
  90 Percent confidence interval - lower         0.087
  90 Percent confidence interval - upper         0.103
  P-value H_0: Robust RMSEA <= 0.050             0.000
  P-value H_0: Robust RMSEA >= 0.080             0.999

Standardized Root Mean Square Residual:

  SRMR                                           0.062

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  openn_ideal1 =~                                     
    b06_05_ (lmb1)    0.255    0.057    4.476    0.000
    b06_10_ (lmb2)   -0.418    0.027  -15.710    0.000
    b06_15_ (lmb3)   -0.383    0.025  -15.319    0.000
    b06_20_ (lmb4)   -0.548    0.033  -16.798    0.000
    b06_25_ (lmb5)    0.537    0.039   13.632    0.000
    b06_30_ (lmb6)    0.559    0.052   10.808    0.000
    b06_35_ (lmb7)   -0.545    0.034  -16.236    0.000
    b06_40_ (lmb8)   -0.511    0.042  -12.236    0.000
    b06_45_ (lmb9)    0.525    0.038   13.904    0.000
    b06_50_ (lm10)    0.590    0.041   14.308    0.000
    b06_55_ (lm11)    0.554    0.045   12.323    0.000
    b06_60_ (lm12)   -0.456    0.027  -17.166    0.000

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_05_1 (i1)    3.020    0.051   59.265    0.000
   .bf06_10_1         4.492    0.026  173.867    0.000
   .bf06_15_1         4.595    0.024  191.631    0.000
   .bf06_20_1         4.331    0.032  137.244    0.000
   .bf06_25_1         1.823    0.037   48.684    0.000
   .bf06_30_1         2.012    0.048   42.001    0.000
   .bf06_35_1         4.296    0.032  133.053    0.000
   .bf06_40_1         3.899    0.039   99.042    0.000
   .bf06_45_1         1.639    0.036   45.721    0.000
   .bf06_50_1         1.996    0.039   50.743    0.000
   .bf06_55_1         2.159    0.042   51.370    0.000
   .bf06_60_1         4.528    0.026  174.121    0.000
    openn_dl1         0.000                           

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .bf06_05_t1        2.129    0.104   20.396    0.000
   .bf06_10_t1        0.389    0.021   18.294    0.000
   .bf06_15_t1        0.340    0.019   18.225    0.000
   .bf06_20_t1        0.541    0.031   17.325    0.000
   .bf06_25_t1        0.897    0.047   18.909    0.000
   .bf06_30_t1        1.630    0.083   19.553    0.000
   .bf06_35_t1        0.583    0.033   17.571    0.000
   .bf06_40_t1        1.049    0.054   19.317    0.000
   .bf06_45_t1        0.812    0.043   18.754    0.000
   .bf06_50_t1        0.961    0.052   18.632    0.000
   .bf06_55_t1        1.188    0.062   19.162    0.000
   .bf06_60_t1        0.365    0.021   17.350    0.000
    openn_ideal1      1.000                           
tidy(fit_cfa_openn_ideal) %>% filter(str_detect(label, "lambda")) %>% mutate(abs_loading = abs(estimate)) %>% arrange(desc(abs_loading)) %>% select(1:5, std.all)
# A tibble: 12 × 6
   term                       op    label    estimate std.error std.all
   <chr>                      <chr> <chr>       <dbl>     <dbl>   <dbl>
 1 openn_ideal1 =~ bf06_50_t1 =~    lambda10    0.590    0.0412   0.516
 2 openn_ideal1 =~ bf06_30_t1 =~    lambda6     0.559    0.0517   0.401
 3 openn_ideal1 =~ bf06_55_t1 =~    lambda11    0.554    0.0449   0.453
 4 openn_ideal1 =~ bf06_20_t1 =~    lambda4    -0.548    0.0326  -0.598
 5 openn_ideal1 =~ bf06_35_t1 =~    lambda7    -0.545    0.0336  -0.581
 6 openn_ideal1 =~ bf06_25_t1 =~    lambda5     0.537    0.0394   0.493
 7 openn_ideal1 =~ bf06_45_t1 =~    lambda9     0.525    0.0377   0.503
 8 openn_ideal1 =~ bf06_40_t1 =~    lambda8    -0.511    0.0418  -0.447
 9 openn_ideal1 =~ bf06_60_t1 =~    lambda12   -0.456    0.0266  -0.603
10 openn_ideal1 =~ bf06_10_t1 =~    lambda2    -0.418    0.0266  -0.556
11 openn_ideal1 =~ bf06_15_t1 =~    lambda3    -0.383    0.0250  -0.549
12 openn_ideal1 =~ bf06_05_t1 =~    lambda1     0.255    0.0569   0.172

Reverse-code and form parcels:

df_sbsa2_wide_pers <- df_sbsa2_wide_pers %>% 
  mutate(bf06_50_t1_r = bf06_50_t1,
         bf06_55_t1_r = bf06_55_t1,
         bf06_30_t1_r = bf06_30_t1,
         bf06_25_t1_r = bf06_25_t1,
         bf06_45_t1_r = bf06_45_t1,
         bf06_05_t1_r = bf06_05_t1,
         bf06_50_t2_r = bf06_50_t2,
         bf06_55_t2_r = bf06_55_t2,
         bf06_30_t2_r = bf06_30_t2,
         bf06_25_t2_r = bf06_25_t2,
         bf06_45_t2_r = bf06_45_t2,
         bf06_05_t2_r = bf06_05_t2,
         bf06_50_t3_r = bf06_50_t3,
         bf06_55_t3_r = bf06_55_t3,
         bf06_30_t3_r = bf06_30_t3,
         bf06_25_t3_r = bf06_25_t3,
         bf06_45_t3_r = bf06_45_t3,
         bf06_05_t3_r = bf06_05_t3) %>% 
  mutate(across(c(bf06_50_t1_r, bf06_55_t1_r, bf06_30_t1_r, bf06_25_t1_r, bf06_45_t1_r, bf06_05_t1_r,
                  bf06_50_t2_r, bf06_55_t2_r, bf06_30_t2_r, bf06_25_t2_r, bf06_45_t2_r, bf06_05_t2_r,
                  bf06_50_t3_r, bf06_55_t3_r, bf06_30_t3_r, bf06_25_t3_r, bf06_45_t3_r, bf06_05_t3_r), 
                ~ recode(.x, `1` = 5L, `2` = 4L, `3` = 3L, `4` = 2L, `5` = 1L, .default = NA_integer_))) %>% 
  mutate(openn_ideal_par1_t1 = rowMeans(across(c(bf06_50_t1_r, bf06_25_t1_r, bf06_60_t1, bf06_05_t1)), na.rm=T),
         openn_ideal_par2_t1 = rowMeans(across(c(bf06_30_t1_r, bf06_35_t1, bf06_40_t1, bf06_15_t1)), na.rm=T),
         openn_ideal_par3_t1 = rowMeans(across(c(bf06_55_t1_r, bf06_20_t1, bf06_45_t1_r, bf06_10_t1)), na.rm=T),
         openn_ideal_par1_t2 = rowMeans(across(c(bf06_50_t2_r, bf06_25_t2_r, bf06_60_t2, bf06_05_t2)), na.rm=T),
         openn_ideal_par2_t2 = rowMeans(across(c(bf06_30_t2_r, bf06_35_t2, bf06_40_t2, bf06_15_t2)), na.rm=T),
         openn_ideal_par3_t2 = rowMeans(across(c(bf06_55_t2_r, bf06_20_t2, bf06_45_t2_r, bf06_10_t2)), na.rm=T),
         openn_ideal_par1_t3 = rowMeans(across(c(bf06_50_t3_r, bf06_25_t3_r, bf06_60_t3, bf06_05_t3)), na.rm=T),
         openn_ideal_par2_t3 = rowMeans(across(c(bf06_30_t3_r, bf06_35_t3, bf06_40_t3, bf06_15_t3)), na.rm=T),
         openn_ideal_par3_t3 = rowMeans(across(c(bf06_55_t3_r, bf06_20_t3, bf06_45_t3_r, bf06_10_t3)), na.rm=T))

4 Measurement invariance

4.1 Well-being outcomes

Testing for measurement invariance of the latent traits across time. Only doing this for the two (original) intervention groups for now, not for the waitlist control group, because they had different intervention schedules and our main focus lies on testing changes in the intervention groups.

4.1.1 Life satisfaction

Satisfaction with life scale (only the first four items - last one taps into a somewhat different construct)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + sw06_02_t1 + sw06_03_t1 + sw06_04_t1
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + sw06_02_t2 + sw06_03_t2 + sw06_04_t2
swls3 =~ NA*sw06_01_t3 + lambda1*sw06_01_t3 + sw06_02_t3 + sw06_03_t3 + sw06_04_t3

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ 1
sw06_03_t1 ~ 1
sw06_04_t1 ~ 1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ 1
sw06_03_t2 ~ 1
sw06_04_t2 ~ 1

sw06_01_t3 ~ i1*1
sw06_02_t3 ~ 1
sw06_03_t3 ~ 1
sw06_04_t3 ~ 1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2

sw06_01_t3 ~~ sw06_01_t3
sw06_02_t3 ~~ sw06_02_t3
sw06_03_t3 ~~ sw06_03_t3
sw06_04_t3 ~~ sw06_04_t3

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1
swls3 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls3 ~~ swls3
swls1 ~~ swls2
swls1 ~~ swls3
swls2 ~~ swls3
'
fit_configural_swls <- cfa(configural_swls, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_configural_swls, fit.measures = TRUE)

# Weak invariance model
weak_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2
swls3 =~ NA*sw06_01_t3 + lambda1*sw06_01_t3 + lambda2*sw06_02_t3 + lambda3*sw06_03_t3 + lambda4*sw06_04_t3

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ 1
sw06_03_t1 ~ 1
sw06_04_t1 ~ 1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ 1
sw06_03_t2 ~ 1
sw06_04_t2 ~ 1

sw06_01_t3 ~ i1*1
sw06_02_t3 ~ 1
sw06_03_t3 ~ 1
sw06_04_t3 ~ 1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2

sw06_01_t3 ~~ sw06_01_t3
sw06_02_t3 ~~ sw06_02_t3
sw06_03_t3 ~~ sw06_03_t3
sw06_04_t3 ~~ sw06_04_t3

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1
swls3 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls3 ~~ swls3
swls1 ~~ swls2
swls1 ~~ swls3
swls2 ~~ swls3
'
fit_weak_swls <- cfa(weak_swls, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_weak_swls, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2
swls3 =~ NA*sw06_01_t3 + lambda1*sw06_01_t3 + lambda2*sw06_02_t3 + lambda3*sw06_03_t3 + lambda4*sw06_04_t3

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ i2*1
sw06_03_t1 ~ i3*1
sw06_04_t1 ~ i4*1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ i2*1
sw06_03_t2 ~ i3*1
sw06_04_t2 ~ i4*1

sw06_01_t3 ~ i1*1
sw06_02_t3 ~ i2*1
sw06_03_t3 ~ i3*1
sw06_04_t3 ~ i4*1

# Unique Variances
sw06_01_t1 ~~ sw06_01_t1
sw06_02_t1 ~~ sw06_02_t1
sw06_03_t1 ~~ sw06_03_t1
sw06_04_t1 ~~ sw06_04_t1

sw06_01_t2 ~~ sw06_01_t2
sw06_02_t2 ~~ sw06_02_t2
sw06_03_t2 ~~ sw06_03_t2
sw06_04_t2 ~~ sw06_04_t2

sw06_01_t3 ~~ sw06_01_t3
sw06_02_t3 ~~ sw06_02_t3
sw06_03_t3 ~~ sw06_03_t3
sw06_04_t3 ~~ sw06_04_t3

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1
swls3 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls3 ~~ swls3
swls1 ~~ swls2
swls1 ~~ swls3
swls2 ~~ swls3
'
fit_strong_swls <- cfa(strong_swls, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strong_swls, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_swls <- '
# Define the latent factors
swls1 =~ NA*sw06_01_t1 + lambda1*sw06_01_t1 + lambda2*sw06_02_t1 + lambda3*sw06_03_t1 + lambda4*sw06_04_t1
swls2 =~ NA*sw06_01_t2 + lambda1*sw06_01_t2 + lambda2*sw06_02_t2 + lambda3*sw06_03_t2 + lambda4*sw06_04_t2
swls3 =~ NA*sw06_01_t3 + lambda1*sw06_01_t3 + lambda2*sw06_02_t3 + lambda3*sw06_03_t3 + lambda4*sw06_04_t3

# Intercepts
sw06_01_t1 ~ i1*1
sw06_02_t1 ~ i2*1
sw06_03_t1 ~ i3*1
sw06_04_t1 ~ i4*1

sw06_01_t2 ~ i1*1
sw06_02_t2 ~ i2*1
sw06_03_t2 ~ i3*1
sw06_04_t2 ~ i4*1

sw06_01_t3 ~ i1*1
sw06_02_t3 ~ i2*1
sw06_03_t3 ~ i3*1
sw06_04_t3 ~ i4*1

# Unique Variances
sw06_01_t1 ~~ u1*sw06_01_t1
sw06_02_t1 ~~ u2*sw06_02_t1
sw06_03_t1 ~~ u3*sw06_03_t1
sw06_04_t1 ~~ u4*sw06_04_t1

sw06_01_t2 ~~ u1*sw06_01_t2
sw06_02_t2 ~~ u2*sw06_02_t2
sw06_03_t2 ~~ u3*sw06_03_t2
sw06_04_t2 ~~ u4*sw06_04_t2

sw06_01_t3 ~~ u1*sw06_01_t3
sw06_02_t3 ~~ u2*sw06_02_t3
sw06_03_t3 ~~ u3*sw06_03_t3
sw06_04_t3 ~~ u4*sw06_04_t3

# Latent Variable Means
swls1 ~ 0*1
swls2 ~ 1
swls3 ~ 1

# Latent Variable Variances and Covariance
swls1 ~~ 1*swls1
swls2 ~~ swls2
swls3 ~~ swls3
swls1 ~~ swls2
swls2 ~~ swls3
swls1 ~~ swls3
'
fit_strict_swls <- cfa(strict_swls, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strict_swls, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_swls) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   848    39  678. 22384. 22569. 0.907 0.880 0.120 0.0468
2 weak         848    33  678. 22372. 22529. 0.908 0.893 0.113 0.0472
3 strong       848    27  688. 22370. 22498. 0.907 0.903 0.108 0.0485
4 strict       848    19  744. 22410. 22500. 0.900 0.907 0.106 0.0543
# chi-square difference test for nested models 
anova(fit_configural_swls, fit_weak_swls)

Chi-Squared Difference Test

                    Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_configural_swls 51 22384 22568 677.81                                    
fit_weak_swls       57 22372 22529 678.41    0.59442     0       6     0.9965
anova(fit_weak_swls, fit_strong_swls)

Chi-Squared Difference Test

                Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_weak_swls   57 22372 22529 678.41                                       
fit_strong_swls 63 22370 22498 687.90     9.4974 0.026218       6     0.1475
anova(fit_strong_swls, fit_strict_swls)

Chi-Squared Difference Test

                Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_strong_swls 63 22370 22498 687.90                                       
fit_strict_swls 71 22410 22500 743.84     55.932 0.084056       8  2.908e-09
                   
fit_strong_swls    
fit_strict_swls ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model fit relatively similar across model specifications. Chi^2 tests indicate that strong measurement invariance is given.

4.1.2 Meaning in life

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_meaning <- '
# Define the latent factors
meaning1 =~ NA*meaning_par1_t1 + lambda1*meaning_par1_t1 + meaning_par2_t1 + meaning_par3_t1
meaning2 =~ NA*meaning_par1_t2 + lambda1*meaning_par1_t2 + meaning_par2_t2 + meaning_par3_t2
meaning3 =~ NA*meaning_par1_t3 + lambda1*meaning_par1_t3 + meaning_par2_t3 + meaning_par3_t3

# Intercepts
meaning_par1_t1 ~ i1*1
meaning_par2_t1 ~ 1
meaning_par3_t1 ~ 1

meaning_par1_t2 ~ i1*1
meaning_par2_t2 ~ 1
meaning_par3_t2 ~ 1

meaning_par1_t3 ~ i1*1
meaning_par2_t3 ~ 1
meaning_par3_t3 ~ 1

# Unique Variances
meaning_par1_t1 ~~ meaning_par1_t1
meaning_par2_t1 ~~ meaning_par2_t1
meaning_par3_t1 ~~ meaning_par3_t1

meaning_par1_t2 ~~ meaning_par1_t2
meaning_par2_t2 ~~ meaning_par2_t2
meaning_par3_t2 ~~ meaning_par3_t2

meaning_par1_t3 ~~ meaning_par1_t3
meaning_par2_t3 ~~ meaning_par2_t3
meaning_par3_t3 ~~ meaning_par3_t3

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1
meaning3 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning3 ~~ meaning3
meaning1 ~~ meaning2
meaning2 ~~ meaning3
meaning1 ~~ meaning3
'
fit_configural_meaning <- cfa(configural_meaning, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_configural_meaning, fit.measures = TRUE)

# Weak invariance model
weak_meaning <- '
# Define the latent factors
meaning1 =~ NA*meaning_par1_t1 + lambda1*meaning_par1_t1 + lambda2*meaning_par2_t1 + lambda3*meaning_par3_t1
meaning2 =~ NA*meaning_par1_t2 + lambda1*meaning_par1_t2 + lambda2*meaning_par2_t2 + lambda3*meaning_par3_t2
meaning3 =~ NA*meaning_par1_t3 + lambda1*meaning_par1_t3 + lambda2*meaning_par2_t3 + lambda3*meaning_par3_t3

# Intercepts
meaning_par1_t1 ~ i1*1
meaning_par2_t1 ~ 1
meaning_par3_t1 ~ 1

meaning_par1_t2 ~ i1*1
meaning_par2_t2 ~ 1
meaning_par3_t2 ~ 1

meaning_par1_t3 ~ i1*1
meaning_par2_t3 ~ 1
meaning_par3_t3 ~ 1

# Unique Variances
meaning_par1_t1 ~~ meaning_par1_t1
meaning_par2_t1 ~~ meaning_par2_t1
meaning_par3_t1 ~~ meaning_par3_t1

meaning_par1_t2 ~~ meaning_par1_t2
meaning_par2_t2 ~~ meaning_par2_t2
meaning_par3_t2 ~~ meaning_par3_t2

meaning_par1_t3 ~~ meaning_par1_t3
meaning_par2_t3 ~~ meaning_par2_t3
meaning_par3_t3 ~~ meaning_par3_t3

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1
meaning3 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning3 ~~ meaning3
meaning1 ~~ meaning2
meaning2 ~~ meaning3
meaning1 ~~ meaning3
'
fit_weak_meaning <- cfa(weak_meaning, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_weak_meaning, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_meaning <- '
# Define the latent factors
meaning1 =~ NA*meaning_par1_t1 + lambda1*meaning_par1_t1 + lambda2*meaning_par2_t1 + lambda3*meaning_par3_t1
meaning2 =~ NA*meaning_par1_t2 + lambda1*meaning_par1_t2 + lambda2*meaning_par2_t2 + lambda3*meaning_par3_t2
meaning3 =~ NA*meaning_par1_t3 + lambda1*meaning_par1_t3 + lambda2*meaning_par2_t3 + lambda3*meaning_par3_t3

# Intercepts
meaning_par1_t1 ~ i1*1
meaning_par2_t1 ~ i2*1
meaning_par3_t1 ~ i3*1

meaning_par1_t2 ~ i1*1
meaning_par2_t2 ~ i2*1
meaning_par3_t2 ~ i3*1

meaning_par1_t3 ~ i1*1
meaning_par2_t3 ~ i2*1
meaning_par3_t3 ~ i3*1

# Unique Variances
meaning_par1_t1 ~~ meaning_par1_t1
meaning_par2_t1 ~~ meaning_par2_t1
meaning_par3_t1 ~~ meaning_par3_t1

meaning_par1_t2 ~~ meaning_par1_t2
meaning_par2_t2 ~~ meaning_par2_t2
meaning_par3_t2 ~~ meaning_par3_t2

meaning_par1_t3 ~~ meaning_par1_t3
meaning_par2_t3 ~~ meaning_par2_t3
meaning_par3_t3 ~~ meaning_par3_t3

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1
meaning3 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning3 ~~ meaning3
meaning1 ~~ meaning2
meaning1 ~~ meaning3
meaning2 ~~ meaning3
'
fit_strong_meaning <- cfa(strong_meaning, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strong_meaning, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_meaning <- '
# Define the latent factors
meaning1 =~ NA*meaning_par1_t1 + lambda1*meaning_par1_t1 + lambda2*meaning_par2_t1 + lambda3*meaning_par3_t1
meaning2 =~ NA*meaning_par1_t2 + lambda1*meaning_par1_t2 + lambda2*meaning_par2_t2 + lambda3*meaning_par3_t2
meaning3 =~ NA*meaning_par1_t3 + lambda1*meaning_par1_t3 + lambda2*meaning_par2_t3 + lambda3*meaning_par3_t3

# Intercepts
meaning_par1_t1 ~ i1*1
meaning_par2_t1 ~ i2*1
meaning_par3_t1 ~ i3*1

meaning_par1_t2 ~ i1*1
meaning_par2_t2 ~ i2*1
meaning_par3_t2 ~ i3*1

meaning_par1_t3 ~ i1*1
meaning_par2_t3 ~ i2*1
meaning_par3_t3 ~ i3*1

# Unique Variances
meaning_par1_t1 ~~ u1*meaning_par1_t1
meaning_par2_t1 ~~ u2*meaning_par2_t1
meaning_par3_t1 ~~ u3*meaning_par3_t1

meaning_par1_t2 ~~ u1*meaning_par1_t2
meaning_par2_t2 ~~ u2*meaning_par2_t2
meaning_par3_t2 ~~ u3*meaning_par3_t2

meaning_par1_t3 ~~ u1*meaning_par1_t3
meaning_par2_t3 ~~ u2*meaning_par2_t3
meaning_par3_t3 ~~ u3*meaning_par3_t3

# Latent Variable Means
meaning1 ~ 0*1
meaning2 ~ 1
meaning3 ~ 1

# Latent Variable Variances and Covariance
meaning1 ~~ 1*meaning1
meaning2 ~~ meaning2
meaning3 ~~ meaning3
meaning1 ~~ meaning2
meaning1 ~~ meaning3
meaning2 ~~ meaning3
'
fit_strict_meaning <- cfa(strict_meaning, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strict_meaning, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_meaning) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   848    30  561. 16778. 16920. 0.910 0.865 0.162 0.0390
2 weak         848    26  566. 16775. 16899. 0.910 0.884 0.151 0.0423
3 strong       848    22  568. 16769. 16874. 0.910 0.899 0.141 0.0420
4 strict       848    16  586. 16775. 16851. 0.908 0.913 0.130 0.0476
# chi-square difference test for nested models 
anova(fit_configural_meaning, fit_weak_meaning)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural_meaning 24 16778 16920 561.41                            
fit_weak_meaning       28 16775 16898 566.50     5.0933 0.017954       4
                       Pr(>Chisq)
fit_configural_meaning           
fit_weak_meaning           0.2779
anova(fit_weak_meaning, fit_strong_meaning)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_weak_meaning   28 16775 16898 566.50                                    
fit_strong_meaning 32 16769 16874 568.49     1.9918     0       4     0.7373
anova(fit_strong_meaning, fit_strict_meaning)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_strong_meaning 32 16769 16874 568.49                                       
fit_strict_meaning 38 16775 16851 586.21     17.716 0.047987       6   0.006982
                     
fit_strong_meaning   
fit_strict_meaning **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Good model fit across all model specifications (except for RMSEA). Chi^2 tests indicate that strong measurement invariance is given.

4.1.3 Self-esteem

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_selfes <- '
# Define the latent factors
selfes1 =~ NA*selfes_par1_t1 + lambda1*selfes_par1_t1 + selfes_par2_t1 + selfes_par3_t1
selfes2 =~ NA*selfes_par1_t2 + lambda1*selfes_par1_t2 + selfes_par2_t2 + selfes_par3_t2
selfes3 =~ NA*selfes_par1_t3 + lambda1*selfes_par1_t3 + selfes_par2_t3 + selfes_par3_t3

# Intercepts
selfes_par1_t1 ~ i1*1
selfes_par2_t1 ~ 1
selfes_par3_t1 ~ 1

selfes_par1_t2 ~ i1*1
selfes_par2_t2 ~ 1
selfes_par3_t2 ~ 1

selfes_par1_t3 ~ i1*1
selfes_par2_t3 ~ 1
selfes_par3_t3 ~ 1

# Unique Variances
selfes_par1_t1 ~~ selfes_par1_t1
selfes_par2_t1 ~~ selfes_par2_t1
selfes_par3_t1 ~~ selfes_par3_t1

selfes_par1_t2 ~~ selfes_par1_t2
selfes_par2_t2 ~~ selfes_par2_t2
selfes_par3_t2 ~~ selfes_par3_t2

selfes_par1_t3 ~~ selfes_par1_t3
selfes_par2_t3 ~~ selfes_par2_t3
selfes_par3_t3 ~~ selfes_par3_t3

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1
selfes3 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes3 ~~ selfes3
selfes1 ~~ selfes2
selfes1 ~~ selfes3
selfes2 ~~ selfes3
'
fit_configural_selfes <- cfa(configural_selfes, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_configural_selfes, fit.measures = TRUE)

# Weak invariance model
weak_selfes <- '
# Define the latent factors
selfes1 =~ NA*selfes_par1_t1 + lambda1*selfes_par1_t1 + lambda2*selfes_par2_t1 + lambda3*selfes_par3_t1
selfes2 =~ NA*selfes_par1_t2 + lambda1*selfes_par1_t2 + lambda2*selfes_par2_t2 + lambda3*selfes_par3_t2
selfes3 =~ NA*selfes_par1_t3 + lambda1*selfes_par1_t3 + lambda2*selfes_par2_t3 + lambda3*selfes_par3_t3

# Intercepts
selfes_par1_t1 ~ i1*1
selfes_par2_t1 ~ 1
selfes_par3_t1 ~ 1

selfes_par1_t2 ~ i1*1
selfes_par2_t2 ~ 1
selfes_par3_t2 ~ 1

selfes_par1_t3 ~ i1*1
selfes_par2_t3 ~ 1
selfes_par3_t3 ~ 1

# Unique Variances
selfes_par1_t1 ~~ selfes_par1_t1
selfes_par2_t1 ~~ selfes_par2_t1
selfes_par3_t1 ~~ selfes_par3_t1

selfes_par1_t2 ~~ selfes_par1_t2
selfes_par2_t2 ~~ selfes_par2_t2
selfes_par3_t2 ~~ selfes_par3_t2

selfes_par1_t3 ~~ selfes_par1_t3
selfes_par2_t3 ~~ selfes_par2_t3
selfes_par3_t3 ~~ selfes_par3_t3

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1
selfes3 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes3 ~~ selfes3
selfes1 ~~ selfes2
selfes1 ~~ selfes3
selfes2 ~~ selfes3
'
fit_weak_selfes <- cfa(weak_selfes, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_weak_selfes, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_selfes <- '
# Define the latent factors
selfes1 =~ NA*selfes_par1_t1 + lambda1*selfes_par1_t1 + lambda2*selfes_par2_t1 + lambda3*selfes_par3_t1
selfes2 =~ NA*selfes_par1_t2 + lambda1*selfes_par1_t2 + lambda2*selfes_par2_t2 + lambda3*selfes_par3_t2
selfes3 =~ NA*selfes_par1_t3 + lambda1*selfes_par1_t3 + lambda2*selfes_par2_t3 + lambda3*selfes_par3_t3

# Intercepts
selfes_par1_t1 ~ i1*1
selfes_par2_t1 ~ i2*1
selfes_par3_t1 ~ i3*1

selfes_par1_t2 ~ i1*1
selfes_par2_t2 ~ i2*1
selfes_par3_t2 ~ i3*1

selfes_par1_t3 ~ i1*1
selfes_par2_t3 ~ i2*1
selfes_par3_t3 ~ i3*1

# Unique Variances
selfes_par1_t1 ~~ selfes_par1_t1
selfes_par2_t1 ~~ selfes_par2_t1
selfes_par3_t1 ~~ selfes_par3_t1

selfes_par1_t2 ~~ selfes_par1_t2
selfes_par2_t2 ~~ selfes_par2_t2
selfes_par3_t2 ~~ selfes_par3_t2

selfes_par1_t3 ~~ selfes_par1_t3
selfes_par2_t3 ~~ selfes_par2_t3
selfes_par3_t3 ~~ selfes_par3_t3

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1
selfes3 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes3 ~~ selfes3
selfes1 ~~ selfes2
selfes1 ~~ selfes3
selfes2 ~~ selfes3
'
fit_strong_selfes <- cfa(strong_selfes, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strong_selfes, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_selfes <- '
# Define the latent factors
selfes1 =~ NA*selfes_par1_t1 + lambda1*selfes_par1_t1 + lambda2*selfes_par2_t1 + lambda3*selfes_par3_t1
selfes2 =~ NA*selfes_par1_t2 + lambda1*selfes_par1_t2 + lambda2*selfes_par2_t2 + lambda3*selfes_par3_t2
selfes3 =~ NA*selfes_par1_t3 + lambda1*selfes_par1_t3 + lambda2*selfes_par2_t3 + lambda3*selfes_par3_t3

# Intercepts
selfes_par1_t1 ~ i1*1
selfes_par2_t1 ~ i2*1
selfes_par3_t1 ~ i3*1

selfes_par1_t2 ~ i1*1
selfes_par2_t2 ~ i2*1
selfes_par3_t2 ~ i3*1

selfes_par1_t3 ~ i1*1
selfes_par2_t3 ~ i2*1
selfes_par3_t3 ~ i3*1

# Unique Variances
selfes_par1_t1 ~~ u1*selfes_par1_t1
selfes_par2_t1 ~~ u2*selfes_par2_t1
selfes_par3_t1 ~~ u3*selfes_par3_t1

selfes_par1_t2 ~~ u1*selfes_par1_t2
selfes_par2_t2 ~~ u2*selfes_par2_t2
selfes_par3_t2 ~~ u3*selfes_par3_t2

selfes_par1_t3 ~~ u1*selfes_par1_t3
selfes_par2_t3 ~~ u2*selfes_par2_t3
selfes_par3_t3 ~~ u3*selfes_par3_t3

# Latent Variable Means
selfes1 ~ 0*1
selfes2 ~ 1
selfes3 ~ 1

# Latent Variable Variances and Covariance
selfes1 ~~ 1*selfes1
selfes2 ~~ selfes2
selfes3 ~~ selfes3
selfes1 ~~ selfes2
selfes1 ~~ selfes3
selfes2 ~~ selfes3
'
fit_strict_selfes <- cfa(strict_selfes, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strict_selfes, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_selfes) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   848    30  520. 12326. 12468. 0.924 0.886 0.156 0.0379
2 weak         848    26  523. 12320. 12443. 0.924 0.902 0.144 0.0407
3 strong       848    22  526. 12315. 12419. 0.924 0.915 0.135 0.0400
4 strict       848    16  532. 12310. 12385. 0.924 0.928 0.124 0.0427
# chi-square difference test for nested models 
anova(fit_configural_selfes, fit_weak_selfes)

Chi-Squared Difference Test

                      Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_configural_selfes 24 12326 12468 520.25                                    
fit_weak_selfes       28 12320 12444 522.65     2.3939     0       4     0.6637
anova(fit_weak_selfes, fit_strong_selfes)

Chi-Squared Difference Test

                  Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_weak_selfes   28 12320 12444 522.65                                    
fit_strong_selfes 32 12315 12419 525.54     2.8952     0       4     0.5755
anova(fit_strong_selfes, fit_strict_selfes)

Chi-Squared Difference Test

                  Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_strong_selfes 32 12315 12419 525.54                                       
fit_strict_selfes 38 12310 12386 532.10     6.5563 0.010456       6     0.3638

Good model fit across all model specifications (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.1.4 Self concept clarity

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_concept <- '
# Define the latent factors
concept1 =~ NA*concept_par1_t1 + lambda1*concept_par1_t1 + concept_par2_t1 + concept_par3_t1
concept2 =~ NA*concept_par1_t2 + lambda1*concept_par1_t2 + concept_par2_t2 + concept_par3_t2
concept3 =~ NA*concept_par1_t3 + lambda1*concept_par1_t3 + concept_par2_t3 + concept_par3_t3

# Intercepts
concept_par1_t1 ~ i1*1
concept_par2_t1 ~ 1
concept_par3_t1 ~ 1

concept_par1_t2 ~ i1*1
concept_par2_t2 ~ 1
concept_par3_t2 ~ 1

concept_par1_t3 ~ i1*1
concept_par2_t3 ~ 1
concept_par3_t3 ~ 1

# Unique Variances
concept_par1_t1 ~~ concept_par1_t1
concept_par2_t1 ~~ concept_par2_t1
concept_par3_t1 ~~ concept_par3_t1

concept_par1_t2 ~~ concept_par1_t2
concept_par2_t2 ~~ concept_par2_t2
concept_par3_t2 ~~ concept_par3_t2

concept_par1_t3 ~~ concept_par1_t3
concept_par2_t3 ~~ concept_par2_t3
concept_par3_t3 ~~ concept_par3_t3

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1
concept3 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept3 ~~ concept3
concept1 ~~ concept2
concept1 ~~ concept3
concept2 ~~ concept3
'
fit_configural_concept <- cfa(configural_concept, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_configural_concept, fit.measures = TRUE)

# Weak invariance model
weak_concept <- '
# Define the latent factors
concept1 =~ NA*concept_par1_t1 + lambda1*concept_par1_t1 + lambda2*concept_par2_t1 + lambda3*concept_par3_t1
concept2 =~ NA*concept_par1_t2 + lambda1*concept_par1_t2 + lambda2*concept_par2_t2 + lambda3*concept_par3_t2
concept3 =~ NA*concept_par1_t3 + lambda1*concept_par1_t3 + lambda2*concept_par2_t3 + lambda3*concept_par3_t3

# Intercepts
concept_par1_t1 ~ i1*1
concept_par2_t1 ~ 1
concept_par3_t1 ~ 1

concept_par1_t2 ~ i1*1
concept_par2_t2 ~ 1
concept_par3_t2 ~ 1

concept_par1_t3 ~ i1*1
concept_par2_t3 ~ 1
concept_par3_t3 ~ 1

# Unique Variances
concept_par1_t1 ~~ concept_par1_t1
concept_par2_t1 ~~ concept_par2_t1
concept_par3_t1 ~~ concept_par3_t1

concept_par1_t2 ~~ concept_par1_t2
concept_par2_t2 ~~ concept_par2_t2
concept_par3_t2 ~~ concept_par3_t2

concept_par1_t3 ~~ concept_par1_t3
concept_par2_t3 ~~ concept_par2_t3
concept_par3_t3 ~~ concept_par3_t3

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1
concept3 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept3 ~~ concept3
concept1 ~~ concept2
concept1 ~~ concept3
concept2 ~~ concept3
'
fit_weak_concept <- cfa(weak_concept, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_weak_concept, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_concept <- '
# Define the latent factors
concept1 =~ NA*concept_par1_t1 + lambda1*concept_par1_t1 + lambda2*concept_par2_t1 + lambda3*concept_par3_t1
concept2 =~ NA*concept_par1_t2 + lambda1*concept_par1_t2 + lambda2*concept_par2_t2 + lambda3*concept_par3_t2
concept3 =~ NA*concept_par1_t3 + lambda1*concept_par1_t3 + lambda2*concept_par2_t3 + lambda3*concept_par3_t3

# Intercepts
concept_par1_t1 ~ i1*1
concept_par2_t1 ~ i2*1
concept_par3_t1 ~ i3*1

concept_par1_t2 ~ i1*1
concept_par2_t2 ~ i2*1
concept_par3_t2 ~ i3*1

concept_par1_t3 ~ i1*1
concept_par2_t3 ~ i2*1
concept_par3_t3 ~ i3*1

# Unique Variances
concept_par1_t1 ~~ concept_par1_t1
concept_par2_t1 ~~ concept_par2_t1
concept_par3_t1 ~~ concept_par3_t1

concept_par1_t2 ~~ concept_par1_t2
concept_par2_t2 ~~ concept_par2_t2
concept_par3_t2 ~~ concept_par3_t2

concept_par1_t3 ~~ concept_par1_t3
concept_par2_t3 ~~ concept_par2_t3
concept_par3_t3 ~~ concept_par3_t3

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1
concept3 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept3 ~~ concept3
concept1 ~~ concept2
concept1 ~~ concept3
concept2 ~~ concept3
'
fit_strong_concept <- cfa(strong_concept, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strong_concept, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_concept <- '
# Define the latent factors
concept1 =~ NA*concept_par1_t1 + lambda1*concept_par1_t1 + lambda2*concept_par2_t1 + lambda3*concept_par3_t1
concept2 =~ NA*concept_par1_t2 + lambda1*concept_par1_t2 + lambda2*concept_par2_t2 + lambda3*concept_par3_t2
concept3 =~ NA*concept_par1_t3 + lambda1*concept_par1_t3 + lambda2*concept_par2_t3 + lambda3*concept_par3_t3

# Intercepts
concept_par1_t1 ~ i1*1
concept_par2_t1 ~ i2*1
concept_par3_t1 ~ i3*1

concept_par1_t2 ~ i1*1
concept_par2_t2 ~ i2*1
concept_par3_t2 ~ i3*1

concept_par1_t3 ~ i1*1
concept_par2_t3 ~ i2*1
concept_par3_t3 ~ i3*1

# Unique Variances
concept_par1_t1 ~~ u1*concept_par1_t1
concept_par2_t1 ~~ u2*concept_par2_t1
concept_par3_t1 ~~ u3*concept_par3_t1

concept_par1_t2 ~~ u1*concept_par1_t2
concept_par2_t2 ~~ u2*concept_par2_t2
concept_par3_t2 ~~ u3*concept_par3_t2

concept_par1_t3 ~~ u1*concept_par1_t3
concept_par2_t3 ~~ u2*concept_par2_t3
concept_par3_t3 ~~ u3*concept_par3_t3

# Latent Variable Means
concept1 ~ 0*1
concept2 ~ 1
concept3 ~ 1

# Latent Variable Variances and Covariance
concept1 ~~ 1*concept1
concept2 ~~ concept2
concept3 ~~ concept3
concept1 ~~ concept2
concept1 ~~ concept3
concept2 ~~ concept3
'
fit_strict_concept <- cfa(strict_concept, data = df_sbsa2_wide_wb, mimic = "mplus", missing="ML")
summary(fit_strict_concept, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_concept) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq    AIC    BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   848    30  393. 12613. 12755. 0.940 0.910 0.135 0.0290
2 weak         848    26  399. 12611. 12734. 0.940 0.923 0.125 0.0346
3 strong       848    22  401. 12605. 12710. 0.940 0.933 0.117 0.0351
4 strict       848    16  414. 12606. 12682. 0.939 0.942 0.108 0.0336
# chi-square difference test for nested models 
anova(fit_configural_concept, fit_weak_concept)

Chi-Squared Difference Test

                       Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural_concept 24 12613 12755 392.65                            
fit_weak_concept       28 12611 12734 399.02     6.3783 0.026479       4
                       Pr(>Chisq)
fit_configural_concept           
fit_weak_concept           0.1726
anova(fit_weak_concept, fit_strong_concept)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff RMSEA Df diff Pr(>Chisq)
fit_weak_concept   28 12611 12734 399.02                                    
fit_strong_concept 32 12605 12710 401.24     2.2189     0       4     0.6956
anova(fit_strong_concept, fit_strict_concept)

Chi-Squared Difference Test

                   Df   AIC   BIC  Chisq Chisq diff    RMSEA Df diff Pr(>Chisq)
fit_strong_concept 32 12605 12710 401.24                                       
fit_strict_concept 38 12606 12682 413.94       12.7 0.036287       6    0.04806
                    
fit_strong_concept  
fit_strict_concept *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Good model fit across all model specifications (except for RMSEA). Chi^2 tests indicate that strong measurement invariance is given (very close to .05).

4.2 Big Five: from T1 to T2

Testing for measurement invariance of the latent BFI-2 traits across time, from T1 to T2.

4.2.1 Extraversion: current-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t1 + lambda1*extra_curr_par1_t1 + extra_curr_par2_t1 + extra_curr_par3_t1
extra_curr2 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + extra_curr_par2_t2 + extra_curr_par3_t2

# Intercepts
extra_curr_par1_t1 ~ i1*1
extra_curr_par2_t1 ~ 1
extra_curr_par3_t1 ~ 1

extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ 1
extra_curr_par3_t2 ~ 1

# Unique Variances
extra_curr_par1_t1 ~~ extra_curr_par1_t1
extra_curr_par2_t1 ~~ extra_curr_par2_t1
extra_curr_par3_t1 ~~ extra_curr_par3_t1

extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_configural_extra_curr <- cfa(configural_extra_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_extra_curr, fit.measures = TRUE)

# Weak invariance model
weak_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t1 + lambda1*extra_curr_par1_t1 + lambda2*extra_curr_par2_t1 + lambda3*extra_curr_par3_t1
extra_curr2 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2

# Intercepts
extra_curr_par1_t1 ~ i1*1
extra_curr_par2_t1 ~ 1
extra_curr_par3_t1 ~ 1

extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ 1
extra_curr_par3_t2 ~ 1

# Unique Variances
extra_curr_par1_t1 ~~ extra_curr_par1_t1
extra_curr_par2_t1 ~~ extra_curr_par2_t1
extra_curr_par3_t1 ~~ extra_curr_par3_t1

extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_weak_extra_curr <- cfa(weak_extra_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_extra_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t1 + lambda1*extra_curr_par1_t1 + lambda2*extra_curr_par2_t1 + lambda3*extra_curr_par3_t1
extra_curr2 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2

# Intercepts
extra_curr_par1_t1 ~ i1*1
extra_curr_par2_t1 ~ i2*1
extra_curr_par3_t1 ~ i3*1

extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ i2*1
extra_curr_par3_t2 ~ i3*1

# Unique Variances
extra_curr_par1_t1 ~~ extra_curr_par1_t1
extra_curr_par2_t1 ~~ extra_curr_par2_t1
extra_curr_par3_t1 ~~ extra_curr_par3_t1

extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strong_extra_curr <- cfa(strong_extra_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_extra_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t1 + lambda1*extra_curr_par1_t1 + lambda2*extra_curr_par2_t1 + lambda3*extra_curr_par3_t1
extra_curr2 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2

# Intercepts
extra_curr_par1_t1 ~ i1*1
extra_curr_par2_t1 ~ i2*1
extra_curr_par3_t1 ~ i3*1

extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ i2*1
extra_curr_par3_t2 ~ i3*1

# Unique Variances
extra_curr_par1_t1 ~~ u1*extra_curr_par1_t1
extra_curr_par2_t1 ~~ u2*extra_curr_par2_t1
extra_curr_par3_t1 ~~ u3*extra_curr_par3_t1

extra_curr_par1_t2 ~~ u1*extra_curr_par1_t2
extra_curr_par2_t2 ~~ u2*extra_curr_par2_t2
extra_curr_par3_t2 ~~ u3*extra_curr_par3_t2

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strict_extra_curr <- cfa(strict_extra_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_extra_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  425. 7518. 7603. 0.814 0.651 0.278 0.0710
2 weak         674    17  426. 7515. 7592. 0.814 0.721 0.249 0.0727
3 strong       674    15  441. 7525. 7593. 0.809 0.761 0.230 0.0739
4 strict       674    12  442. 7520. 7574. 0.810 0.810 0.205 0.0764
# chi-square difference test for nested models 
anova(fit_configural_extra_curr, fit_weak_extra_curr)

Chi-Squared Difference Test

                          Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_extra_curr  8 7517.6 7603.4 425.15                         
fit_weak_extra_curr       10 7514.8 7591.6 426.37     1.2267     0       2
                          Pr(>Chisq)
fit_configural_extra_curr           
fit_weak_extra_curr           0.5415
anova(fit_weak_extra_curr, fit_strong_extra_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak_extra_curr   10 7514.8 7591.6 426.37                            
fit_strong_extra_curr 12 7525.0 7592.7 440.53     14.159 0.094974       2
                      Pr(>Chisq)    
fit_weak_extra_curr                 
fit_strong_extra_curr  0.0008422 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_strong_extra_curr, fit_strict_extra_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_extra_curr 12 7525.0 7592.7 440.53                         
fit_strict_extra_curr 15 7520.2 7574.4 441.73     1.1995     0       3
                      Pr(>Chisq)
fit_strong_extra_curr           
fit_strict_extra_curr     0.7531

Model fit still not satisfactory. Chi^2 tests indicate that weak measurement invariance is given.

4.2.2 Extraversion: ideal-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t1 + lambda1*extra_ideal_par1_t1 + extra_ideal_par2_t1 + extra_ideal_par3_t1
extra_ideal2 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + extra_ideal_par2_t2 + extra_ideal_par3_t2

# Intercepts
extra_ideal_par1_t1 ~ i1*1
extra_ideal_par2_t1 ~ 1
extra_ideal_par3_t1 ~ 1

extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ 1
extra_ideal_par3_t2 ~ 1

# Unique Variances
extra_ideal_par1_t1 ~~ extra_ideal_par1_t1
extra_ideal_par2_t1 ~~ extra_ideal_par2_t1
extra_ideal_par3_t1 ~~ extra_ideal_par3_t1

extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_configural_extra_ideal <- cfa(configural_extra_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_extra_ideal, fit.measures = TRUE)

# Weak invariance model
weak_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t1 + lambda1*extra_ideal_par1_t1 + lambda2*extra_ideal_par2_t1 + lambda3*extra_ideal_par3_t1
extra_ideal2 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2

# Intercepts
extra_ideal_par1_t1 ~ i1*1
extra_ideal_par2_t1 ~ 1
extra_ideal_par3_t1 ~ 1

extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ 1
extra_ideal_par3_t2 ~ 1

# Unique Variances
extra_ideal_par1_t1 ~~ extra_ideal_par1_t1
extra_ideal_par2_t1 ~~ extra_ideal_par2_t1
extra_ideal_par3_t1 ~~ extra_ideal_par3_t1

extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_weak_extra_ideal <- cfa(weak_extra_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_extra_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t1 + lambda1*extra_ideal_par1_t1 + lambda2*extra_ideal_par2_t1 + lambda3*extra_ideal_par3_t1
extra_ideal2 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2

# Intercepts
extra_ideal_par1_t1 ~ i1*1
extra_ideal_par2_t1 ~ i2*1
extra_ideal_par3_t1 ~ i3*1

extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ i2*1
extra_ideal_par3_t2 ~ i3*1

# Unique Variances
extra_ideal_par1_t1 ~~ extra_ideal_par1_t1
extra_ideal_par2_t1 ~~ extra_ideal_par2_t1
extra_ideal_par3_t1 ~~ extra_ideal_par3_t1

extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strong_extra_ideal <- cfa(strong_extra_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_extra_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t1 + lambda1*extra_ideal_par1_t1 + lambda2*extra_ideal_par2_t1 + lambda3*extra_ideal_par3_t1
extra_ideal2 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2

# Intercepts
extra_ideal_par1_t1 ~ i1*1
extra_ideal_par2_t1 ~ i2*1
extra_ideal_par3_t1 ~ i3*1

extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ i2*1
extra_ideal_par3_t2 ~ i3*1

# Unique Variances
extra_ideal_par1_t1 ~~ u1*extra_ideal_par1_t1
extra_ideal_par2_t1 ~~ u2*extra_ideal_par2_t1
extra_ideal_par3_t1 ~~ u3*extra_ideal_par3_t1

extra_ideal_par1_t2 ~~ u1*extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ u2*extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ u3*extra_ideal_par3_t2

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strict_extra_ideal <- cfa(strict_extra_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_extra_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  164. 6257. 6343. 0.855 0.728 0.170 0.0577
2 weak         674    17  165. 6254. 6331. 0.856 0.783 0.152 0.0624
3 strong       674    15  166. 6251. 6319. 0.856 0.820 0.138 0.0645
4 strict       674    12  172. 6251. 6305. 0.854 0.854 0.125 0.0796
# chi-square difference test for nested models 
anova(fit_configural_extra_ideal, fit_weak_extra_ideal)

Chi-Squared Difference Test

                           Df    AIC    BIC Chisq Chisq diff RMSEA Df diff
fit_configural_extra_ideal  8 6256.9 6342.6 163.9                         
fit_weak_extra_ideal       10 6254.1 6330.8 165.1     1.1911     0       2
                           Pr(>Chisq)
fit_configural_extra_ideal           
fit_weak_extra_ideal           0.5513
anova(fit_weak_extra_ideal, fit_strong_extra_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC Chisq Chisq diff RMSEA Df diff
fit_weak_extra_ideal   10 6254.1 6330.8 165.1                         
fit_strong_extra_ideal 12 6251.3 6319.0 166.3     1.2085     0       2
                       Pr(>Chisq)
fit_weak_extra_ideal             
fit_strong_extra_ideal     0.5465
anova(fit_strong_extra_ideal, fit_strict_extra_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_extra_ideal 12 6251.3 6319.0 166.30                            
fit_strict_extra_ideal 15 6251.1 6305.2 172.11      5.801 0.037219       3
                       Pr(>Chisq)
fit_strong_extra_ideal           
fit_strict_extra_ideal     0.1217

Model fit still not satisfactory across all stages of measurement invariance. Chi^2 tests indicate that strict measurement invariance is given.

4.2.3 Agreeableness: current-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t1 + lambda1*agree_curr_par1_t1 + agree_curr_par2_t1 + agree_curr_par3_t1
agree_curr2 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + agree_curr_par2_t2 + agree_curr_par3_t2

# Intercepts
agree_curr_par1_t1 ~ i1*1
agree_curr_par2_t1 ~ 1
agree_curr_par3_t1 ~ 1

agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ 1
agree_curr_par3_t2 ~ 1

# Unique Variances
agree_curr_par1_t1 ~~ agree_curr_par1_t1
agree_curr_par2_t1 ~~ agree_curr_par2_t1
agree_curr_par3_t1 ~~ agree_curr_par3_t1

agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_configural_agree_curr <- cfa(configural_agree_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_agree_curr, fit.measures = TRUE)

# Weak invariance model
weak_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t1 + lambda1*agree_curr_par1_t1 + lambda2*agree_curr_par2_t1 + lambda3*agree_curr_par3_t1
agree_curr2 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2

# Intercepts
agree_curr_par1_t1 ~ i1*1
agree_curr_par2_t1 ~ 1
agree_curr_par3_t1 ~ 1

agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ 1
agree_curr_par3_t2 ~ 1

# Unique Variances
agree_curr_par1_t1 ~~ agree_curr_par1_t1
agree_curr_par2_t1 ~~ agree_curr_par2_t1
agree_curr_par3_t1 ~~ agree_curr_par3_t1

agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_weak_agree_curr <- cfa(weak_agree_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_agree_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t1 + lambda1*agree_curr_par1_t1 + lambda2*agree_curr_par2_t1 + lambda3*agree_curr_par3_t1
agree_curr2 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2

# Intercepts
agree_curr_par1_t1 ~ i1*1
agree_curr_par2_t1 ~ i2*1
agree_curr_par3_t1 ~ i3*1

agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ i2*1
agree_curr_par3_t2 ~ i3*1

# Unique Variances
agree_curr_par1_t1 ~~ agree_curr_par1_t1
agree_curr_par2_t1 ~~ agree_curr_par2_t1
agree_curr_par3_t1 ~~ agree_curr_par3_t1

agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strong_agree_curr <- cfa(strong_agree_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_agree_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t1 + lambda1*agree_curr_par1_t1 + lambda2*agree_curr_par2_t1 + lambda3*agree_curr_par3_t1
agree_curr2 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2

# Intercepts
agree_curr_par1_t1 ~ i1*1
agree_curr_par2_t1 ~ i2*1
agree_curr_par3_t1 ~ i3*1

agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ i2*1
agree_curr_par3_t2 ~ i3*1

# Unique Variances
agree_curr_par1_t1 ~~ u1*agree_curr_par1_t1
agree_curr_par2_t1 ~~ u2*agree_curr_par2_t1
agree_curr_par3_t1 ~~ u3*agree_curr_par3_t1

agree_curr_par1_t2 ~~ u1*agree_curr_par1_t2
agree_curr_par2_t2 ~~ u2*agree_curr_par2_t2
agree_curr_par3_t2 ~~ u3*agree_curr_par3_t2

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strict_agree_curr <- cfa(strict_agree_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_agree_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  198. 6007. 6092. 0.866 0.749 0.188 0.0694
2 weak         674    17  199. 6003. 6080. 0.867 0.801 0.167 0.0739
3 strong       674    15  199. 6000. 6067. 0.868 0.835 0.152 0.0747
4 strict       674    12  200. 5994. 6048. 0.870 0.870 0.135 0.0726
# chi-square difference test for nested models 
anova(fit_configural_agree_curr, fit_weak_agree_curr)

Chi-Squared Difference Test

                          Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_agree_curr  8 6006.6 6092.3 198.11                         
fit_weak_agree_curr       10 6003.4 6080.2 198.99    0.87407     0       2
                          Pr(>Chisq)
fit_configural_agree_curr           
fit_weak_agree_curr            0.646
anova(fit_weak_agree_curr, fit_strong_agree_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_agree_curr   10 6003.4 6080.2 198.99                         
fit_strong_agree_curr 12 5999.6 6067.3 199.12    0.12713     0       2
                      Pr(>Chisq)
fit_weak_agree_curr             
fit_strong_agree_curr     0.9384
anova(fit_strong_agree_curr, fit_strict_agree_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_agree_curr 12 5999.6 6067.3 199.12                         
fit_strict_agree_curr 15 5994.3 6048.5 199.88    0.76272     0       3
                      Pr(>Chisq)
fit_strong_agree_curr           
fit_strict_agree_curr     0.8584

Model fit still not satisfactory. Chi^2 tests indicate that strict measurement invariance is given.

4.2.4 Agreeableness: ideal-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t1 + lambda1*agree_ideal_par1_t1 + agree_ideal_par2_t1 + agree_ideal_par3_t1
agree_ideal2 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + agree_ideal_par2_t2 + agree_ideal_par3_t2

# Intercepts
agree_ideal_par1_t1 ~ i1*1
agree_ideal_par2_t1 ~ 1
agree_ideal_par3_t1 ~ 1

agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ 1
agree_ideal_par3_t2 ~ 1

# Unique Variances
agree_ideal_par1_t1 ~~ agree_ideal_par1_t1
agree_ideal_par2_t1 ~~ agree_ideal_par2_t1
agree_ideal_par3_t1 ~~ agree_ideal_par3_t1

agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_configural_agree_ideal <- cfa(configural_agree_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_agree_ideal, fit.measures = TRUE)

# Weak invariance model
weak_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t1 + lambda1*agree_ideal_par1_t1 + lambda2*agree_ideal_par2_t1 + lambda3*agree_ideal_par3_t1
agree_ideal2 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2

# Intercepts
agree_ideal_par1_t1 ~ i1*1
agree_ideal_par2_t1 ~ 1
agree_ideal_par3_t1 ~ 1

agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ 1
agree_ideal_par3_t2 ~ 1

# Unique Variances
agree_ideal_par1_t1 ~~ agree_ideal_par1_t1
agree_ideal_par2_t1 ~~ agree_ideal_par2_t1
agree_ideal_par3_t1 ~~ agree_ideal_par3_t1

agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_weak_agree_ideal <- cfa(weak_agree_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_agree_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t1 + lambda1*agree_ideal_par1_t1 + lambda2*agree_ideal_par2_t1 + lambda3*agree_ideal_par3_t1
agree_ideal2 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2

# Intercepts
agree_ideal_par1_t1 ~ i1*1
agree_ideal_par2_t1 ~ i2*1
agree_ideal_par3_t1 ~ i3*1

agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ i2*1
agree_ideal_par3_t2 ~ i3*1

# Unique Variances
agree_ideal_par1_t1 ~~ agree_ideal_par1_t1
agree_ideal_par2_t1 ~~ agree_ideal_par2_t1
agree_ideal_par3_t1 ~~ agree_ideal_par3_t1

agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strong_agree_ideal <- cfa(strong_agree_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_agree_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t1 + lambda1*agree_ideal_par1_t1 + lambda2*agree_ideal_par2_t1 + lambda3*agree_ideal_par3_t1
agree_ideal2 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2

# Intercepts
agree_ideal_par1_t1 ~ i1*1
agree_ideal_par2_t1 ~ i2*1
agree_ideal_par3_t1 ~ i3*1

agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ i2*1
agree_ideal_par3_t2 ~ i3*1

# Unique Variances
agree_ideal_par1_t1 ~~ u1*agree_ideal_par1_t1
agree_ideal_par2_t1 ~~ u2*agree_ideal_par2_t1
agree_ideal_par3_t1 ~~ u3*agree_ideal_par3_t1

agree_ideal_par1_t2 ~~ u1*agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ u2*agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ u3*agree_ideal_par3_t2

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strict_agree_ideal <- cfa(strict_agree_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_agree_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  156. 5948. 6034. 0.907 0.826 0.166 0.0511
2 weak         674    17  157. 5945. 6021. 0.908 0.862 0.148 0.0554
3 strong       674    15  157. 5941. 6009. 0.909 0.886 0.134 0.0555
4 strict       674    12  166. 5944. 5998. 0.905 0.905 0.122 0.0743
# chi-square difference test for nested models 
anova(fit_configural_agree_ideal, fit_weak_agree_ideal)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_agree_ideal  8 5947.8 6033.6 155.87                         
fit_weak_agree_ideal       10 5944.7 6021.4 156.77    0.90156     0       2
                           Pr(>Chisq)
fit_configural_agree_ideal           
fit_weak_agree_ideal           0.6371
anova(fit_weak_agree_ideal, fit_strong_agree_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_agree_ideal   10 5944.7 6021.4 156.77                         
fit_strong_agree_ideal 12 5941.1 6008.8 157.12    0.34684     0       2
                       Pr(>Chisq)
fit_weak_agree_ideal             
fit_strong_agree_ideal     0.8408
anova(fit_strong_agree_ideal, fit_strict_agree_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_agree_ideal 12 5941.1 6008.8 157.12                            
fit_strict_agree_ideal 15 5944.2 5998.4 166.26     9.1354 0.055085       3
                       Pr(>Chisq)  
fit_strong_agree_ideal             
fit_strict_agree_ideal    0.02754 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strong measurement invariance is given.

4.2.5 Conscientiousness: current-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t1 + lambda1*consc_curr_par1_t1 + consc_curr_par2_t1 + consc_curr_par3_t1
consc_curr2 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + consc_curr_par2_t2 + consc_curr_par3_t2

# Intercepts
consc_curr_par1_t1 ~ i1*1
consc_curr_par2_t1 ~ 1
consc_curr_par3_t1 ~ 1

consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ 1
consc_curr_par3_t2 ~ 1

# Unique Variances
consc_curr_par1_t1 ~~ consc_curr_par1_t1
consc_curr_par2_t1 ~~ consc_curr_par2_t1
consc_curr_par3_t1 ~~ consc_curr_par3_t1

consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_configural_consc_curr <- cfa(configural_consc_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_consc_curr, fit.measures = TRUE)

# Weak invariance model
weak_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t1 + lambda1*consc_curr_par1_t1 + lambda2*consc_curr_par2_t1 + lambda3*consc_curr_par3_t1
consc_curr2 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2

# Intercepts
consc_curr_par1_t1 ~ i1*1
consc_curr_par2_t1 ~ 1
consc_curr_par3_t1 ~ 1

consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ 1
consc_curr_par3_t2 ~ 1

# Unique Variances
consc_curr_par1_t1 ~~ consc_curr_par1_t1
consc_curr_par2_t1 ~~ consc_curr_par2_t1
consc_curr_par3_t1 ~~ consc_curr_par3_t1

consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_weak_consc_curr <- cfa(weak_consc_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_consc_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t1 + lambda1*consc_curr_par1_t1 + lambda2*consc_curr_par2_t1 + lambda3*consc_curr_par3_t1
consc_curr2 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2

# Intercepts
consc_curr_par1_t1 ~ i1*1
consc_curr_par2_t1 ~ i2*1
consc_curr_par3_t1 ~ i3*1

consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ i2*1
consc_curr_par3_t2 ~ i3*1

# Unique Variances
consc_curr_par1_t1 ~~ consc_curr_par1_t1
consc_curr_par2_t1 ~~ consc_curr_par2_t1
consc_curr_par3_t1 ~~ consc_curr_par3_t1

consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strong_consc_curr <- cfa(strong_consc_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_consc_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t1 + lambda1*consc_curr_par1_t1 + lambda2*consc_curr_par2_t1 + lambda3*consc_curr_par3_t1
consc_curr2 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2

# Intercepts
consc_curr_par1_t1 ~ i1*1
consc_curr_par2_t1 ~ i2*1
consc_curr_par3_t1 ~ i3*1

consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ i2*1
consc_curr_par3_t2 ~ i3*1

# Unique Variances
consc_curr_par1_t1 ~~ u1*consc_curr_par1_t1
consc_curr_par2_t1 ~~ u2*consc_curr_par2_t1
consc_curr_par3_t1 ~~ u3*consc_curr_par3_t1

consc_curr_par1_t2 ~~ u1*consc_curr_par1_t2
consc_curr_par2_t2 ~~ u2*consc_curr_par2_t2
consc_curr_par3_t2 ~~ u3*consc_curr_par3_t2

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strict_consc_curr <- cfa(strict_consc_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_consc_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  219. 6528. 6614. 0.931 0.871 0.198 0.0329
2 weak         674    17  219. 6524. 6601. 0.932 0.898 0.176 0.0331
3 strong       674    15  221. 6522. 6589. 0.932 0.915 0.161 0.0339
4 strict       674    12  221. 6516. 6570. 0.933 0.933 0.143 0.0347
# chi-square difference test for nested models 
anova(fit_configural_consc_curr, fit_weak_consc_curr)

Chi-Squared Difference Test

                          Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_consc_curr  8 6527.8 6613.6 218.86                         
fit_weak_consc_curr       10 6524.0 6600.7 219.02    0.15856     0       2
                          Pr(>Chisq)
fit_configural_consc_curr           
fit_weak_consc_curr           0.9238
anova(fit_weak_consc_curr, fit_strong_consc_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_consc_curr   10 6524.0 6600.7 219.02                         
fit_strong_consc_curr 12 6521.7 6589.4 220.72     1.7006     0       2
                      Pr(>Chisq)
fit_weak_consc_curr             
fit_strong_consc_curr     0.4273
anova(fit_strong_consc_curr, fit_strict_consc_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_consc_curr 12 6521.7 6589.4 220.72                         
fit_strict_consc_curr 15 6516.3 6570.5 221.34    0.62505     0       3
                      Pr(>Chisq)
fit_strong_consc_curr           
fit_strict_consc_curr     0.8907

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.2.6 Conscientiousness: ideal-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t1 + lambda1*consc_ideal_par1_t1 + consc_ideal_par2_t1 + consc_ideal_par3_t1
consc_ideal2 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + consc_ideal_par2_t2 + consc_ideal_par3_t2

# Intercepts
consc_ideal_par1_t1 ~ i1*1
consc_ideal_par2_t1 ~ 1
consc_ideal_par3_t1 ~ 1

consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ 1
consc_ideal_par3_t2 ~ 1

# Unique Variances
consc_ideal_par1_t1 ~~ consc_ideal_par1_t1
consc_ideal_par2_t1 ~~ consc_ideal_par2_t1
consc_ideal_par3_t1 ~~ consc_ideal_par3_t1

consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_configural_consc_ideal <- cfa(configural_consc_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_consc_ideal, fit.measures = TRUE)

# Weak invariance model
weak_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t1 + lambda1*consc_ideal_par1_t1 + lambda2*consc_ideal_par2_t1 + lambda3*consc_ideal_par3_t1
consc_ideal2 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2

# Intercepts
consc_ideal_par1_t1 ~ i1*1
consc_ideal_par2_t1 ~ 1
consc_ideal_par3_t1 ~ 1

consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ 1
consc_ideal_par3_t2 ~ 1

# Unique Variances
consc_ideal_par1_t1 ~~ consc_ideal_par1_t1
consc_ideal_par2_t1 ~~ consc_ideal_par2_t1
consc_ideal_par3_t1 ~~ consc_ideal_par3_t1

consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_weak_consc_ideal <- cfa(weak_consc_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_consc_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t1 + lambda1*consc_ideal_par1_t1 + lambda2*consc_ideal_par2_t1 + lambda3*consc_ideal_par3_t1
consc_ideal2 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2

# Intercepts
consc_ideal_par1_t1 ~ i1*1
consc_ideal_par2_t1 ~ i2*1
consc_ideal_par3_t1 ~ i3*1

consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ i2*1
consc_ideal_par3_t2 ~ i3*1

# Unique Variances
consc_ideal_par1_t1 ~~ consc_ideal_par1_t1
consc_ideal_par2_t1 ~~ consc_ideal_par2_t1
consc_ideal_par3_t1 ~~ consc_ideal_par3_t1

consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strong_consc_ideal <- cfa(strong_consc_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_consc_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t1 + lambda1*consc_ideal_par1_t1 + lambda2*consc_ideal_par2_t1 + lambda3*consc_ideal_par3_t1
consc_ideal2 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2

# Intercepts
consc_ideal_par1_t1 ~ i1*1
consc_ideal_par2_t1 ~ i2*1
consc_ideal_par3_t1 ~ i3*1

consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ i2*1
consc_ideal_par3_t2 ~ i3*1

# Unique Variances
consc_ideal_par1_t1 ~~ u1*consc_ideal_par1_t1
consc_ideal_par2_t1 ~~ u2*consc_ideal_par2_t1
consc_ideal_par3_t1 ~~ u3*consc_ideal_par3_t1

consc_ideal_par1_t2 ~~ u1*consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ u2*consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ u3*consc_ideal_par3_t2

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strict_consc_ideal <- cfa(strict_consc_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_consc_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  136. 5143. 5229. 0.920 0.850 0.154 0.0436
2 weak         674    17  137. 5140. 5216. 0.921 0.882 0.137 0.0472
3 strong       674    15  137. 5136. 5204. 0.922 0.902 0.125 0.0484
4 strict       674    12  138. 5131. 5185. 0.923 0.923 0.110 0.0500
# chi-square difference test for nested models 
anova(fit_configural_consc_ideal, fit_weak_consc_ideal)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_consc_ideal  8 5143.4 5229.1 136.45                         
fit_weak_consc_ideal       10 5139.7 5216.4 136.80    0.35043     0       2
                           Pr(>Chisq)
fit_configural_consc_ideal           
fit_weak_consc_ideal           0.8393
anova(fit_weak_consc_ideal, fit_strong_consc_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak_consc_ideal   10 5139.7 5216.4 136.80                         
fit_strong_consc_ideal 12 5136.3 5204.0 137.43    0.62624     0       2
                       Pr(>Chisq)
fit_weak_consc_ideal             
fit_strong_consc_ideal     0.7312
anova(fit_strong_consc_ideal, fit_strict_consc_ideal)

Chi-Squared Difference Test

                       Df    AIC  BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_consc_ideal 12 5136.3 5204 137.43                         
fit_strict_consc_ideal 15 5130.8 5185 137.93    0.50006     0       3
                       Pr(>Chisq)
fit_strong_consc_ideal           
fit_strict_consc_ideal     0.9189

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.2.7 Neuroticism: current-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t1 + lambda1*neuro_curr_par1_t1 + neuro_curr_par2_t1 + neuro_curr_par3_t1
neuro_curr2 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + neuro_curr_par2_t2 + neuro_curr_par3_t2

# Intercepts
neuro_curr_par1_t1 ~ i1*1
neuro_curr_par2_t1 ~ 1
neuro_curr_par3_t1 ~ 1

neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ 1
neuro_curr_par3_t2 ~ 1

# Unique Variances
neuro_curr_par1_t1 ~~ neuro_curr_par1_t1
neuro_curr_par2_t1 ~~ neuro_curr_par2_t1
neuro_curr_par3_t1 ~~ neuro_curr_par3_t1

neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_configural_neuro_curr <- cfa(configural_neuro_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_neuro_curr, fit.measures = TRUE)

# Weak invariance model
weak_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t1 + lambda1*neuro_curr_par1_t1 + lambda2*neuro_curr_par2_t1 + lambda3*neuro_curr_par3_t1
neuro_curr2 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2

# Intercepts
neuro_curr_par1_t1 ~ i1*1
neuro_curr_par2_t1 ~ 1
neuro_curr_par3_t1 ~ 1

neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ 1
neuro_curr_par3_t2 ~ 1

# Unique Variances
neuro_curr_par1_t1 ~~ neuro_curr_par1_t1
neuro_curr_par2_t1 ~~ neuro_curr_par2_t1
neuro_curr_par3_t1 ~~ neuro_curr_par3_t1

neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_weak_neuro_curr <- cfa(weak_neuro_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_neuro_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t1 + lambda1*neuro_curr_par1_t1 + lambda2*neuro_curr_par2_t1 + lambda3*neuro_curr_par3_t1
neuro_curr2 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2

# Intercepts
neuro_curr_par1_t1 ~ i1*1
neuro_curr_par2_t1 ~ i2*1
neuro_curr_par3_t1 ~ i3*1

neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ i2*1
neuro_curr_par3_t2 ~ i3*1

# Unique Variances
neuro_curr_par1_t1 ~~ neuro_curr_par1_t1
neuro_curr_par2_t1 ~~ neuro_curr_par2_t1
neuro_curr_par3_t1 ~~ neuro_curr_par3_t1

neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strong_neuro_curr <- cfa(strong_neuro_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_neuro_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t1 + lambda1*neuro_curr_par1_t1 + lambda2*neuro_curr_par2_t1 + lambda3*neuro_curr_par3_t1
neuro_curr2 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2

# Intercepts
neuro_curr_par1_t1 ~ i1*1
neuro_curr_par2_t1 ~ i2*1
neuro_curr_par3_t1 ~ i3*1

neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ i2*1
neuro_curr_par3_t2 ~ i3*1

# Unique Variances
neuro_curr_par1_t1 ~~ u1*neuro_curr_par1_t1
neuro_curr_par2_t1 ~~ u2*neuro_curr_par2_t1
neuro_curr_par3_t1 ~~ u3*neuro_curr_par3_t1

neuro_curr_par1_t2 ~~ u1*neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ u2*neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ u3*neuro_curr_par3_t2

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strict_neuro_curr <- cfa(strict_neuro_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_neuro_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  173. 6934. 7020. 0.949 0.905 0.175 0.0265
2 weak         674    17  173. 6930. 7007. 0.950 0.925 0.156 0.0271
3 strong       674    15  175. 6928. 6996. 0.950 0.937 0.142 0.0268
4 strict       674    12  180. 6927. 6981. 0.949 0.949 0.128 0.0296
# chi-square difference test for nested models 
anova(fit_configural_neuro_curr, fit_weak_neuro_curr)

Chi-Squared Difference Test

                          Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_neuro_curr  8 6934.0 7019.8 173.01                         
fit_weak_neuro_curr       10 6930.3 7007.1 173.32    0.30625     0       2
                          Pr(>Chisq)
fit_configural_neuro_curr           
fit_weak_neuro_curr            0.858
anova(fit_weak_neuro_curr, fit_strong_neuro_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff     RMSEA Df diff
fit_weak_neuro_curr   10 6930.3 7007.1 173.32                             
fit_strong_neuro_curr 12 6928.4 6996.1 175.36     2.0421 0.0055866       2
                      Pr(>Chisq)
fit_weak_neuro_curr             
fit_strong_neuro_curr     0.3602
anova(fit_strong_neuro_curr, fit_strict_neuro_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_neuro_curr 12 6928.4 6996.1 175.36                            
fit_strict_neuro_curr 15 6926.9 6981.1 179.87     4.5075 0.027305       3
                      Pr(>Chisq)
fit_strong_neuro_curr           
fit_strict_neuro_curr     0.2116

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.2.8 Neuroticism: ideal-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t1 + lambda1*neuro_ideal_par1_t1 + neuro_ideal_par2_t1 + neuro_ideal_par3_t1
neuro_ideal2 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + neuro_ideal_par2_t2 + neuro_ideal_par3_t2

# Intercepts
neuro_ideal_par1_t1 ~ i1*1
neuro_ideal_par2_t1 ~ 1
neuro_ideal_par3_t1 ~ 1

neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ 1
neuro_ideal_par3_t2 ~ 1

# Unique Variances
neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t1
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t1
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t1

neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_configural_neuro_ideal <- cfa(configural_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_neuro_ideal, fit.measures = TRUE)

# Weak invariance model
weak_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t1 + lambda1*neuro_ideal_par1_t1 + lambda2*neuro_ideal_par2_t1 + lambda3*neuro_ideal_par3_t1
neuro_ideal2 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2

# Intercepts
neuro_ideal_par1_t1 ~ i1*1
neuro_ideal_par2_t1 ~ 1
neuro_ideal_par3_t1 ~ 1

neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ 1
neuro_ideal_par3_t2 ~ 1

# Unique Variances
neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t1
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t1
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t1

neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_weak_neuro_ideal <- cfa(weak_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_neuro_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t1 + lambda1*neuro_ideal_par1_t1 + lambda2*neuro_ideal_par2_t1 + lambda3*neuro_ideal_par3_t1
neuro_ideal2 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2

# Intercepts
neuro_ideal_par1_t1 ~ i1*1
neuro_ideal_par2_t1 ~ i2*1
neuro_ideal_par3_t1 ~ i3*1

neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ i2*1
neuro_ideal_par3_t2 ~ i3*1

# Unique Variances
neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t1
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t1
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t1

neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strong_neuro_ideal <- cfa(strong_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_neuro_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t1 + lambda1*neuro_ideal_par1_t1 + lambda2*neuro_ideal_par2_t1 + lambda3*neuro_ideal_par3_t1
neuro_ideal2 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2

# Intercepts
neuro_ideal_par1_t1 ~ i1*1
neuro_ideal_par2_t1 ~ i2*1
neuro_ideal_par3_t1 ~ i3*1

neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ i2*1
neuro_ideal_par3_t2 ~ i3*1

# Unique Variances
neuro_ideal_par1_t1 ~~ u1*neuro_ideal_par1_t1
neuro_ideal_par2_t1 ~~ u2*neuro_ideal_par2_t1
neuro_ideal_par3_t1 ~~ u3*neuro_ideal_par3_t1

neuro_ideal_par1_t2 ~~ u1*neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ u2*neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ u3*neuro_ideal_par3_t2

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strict_neuro_ideal <- cfa(strict_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_neuro_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   674    19  15.5 5246. 5332. 0.995 0.991 0.0374 0.0129
2 weak         674    17  22.5 5249. 5326. 0.992 0.988 0.0431 0.0331
3 strong       674    15  24.8 5248. 5315. 0.992 0.989 0.0398 0.0369
4 strict       674    12  26.3 5243. 5297. 0.993 0.993 0.0335 0.0296
# chi-square difference test for nested models 
anova(fit_configural_neuro_ideal, fit_weak_neuro_ideal)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural_neuro_ideal  8 5246.4 5332.1 15.549                            
fit_weak_neuro_ideal       10 5249.4 5326.1 22.520     6.9709 0.060725       2
                           Pr(>Chisq)  
fit_configural_neuro_ideal             
fit_weak_neuro_ideal          0.03064 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_weak_neuro_ideal, fit_strong_neuro_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC Chisq Chisq diff    RMSEA Df diff
fit_weak_neuro_ideal   10 5249.4 5326.1 22.52                            
fit_strong_neuro_ideal 12 5247.7 5315.4 24.81     2.2898 0.014663       2
                       Pr(>Chisq)
fit_weak_neuro_ideal             
fit_strong_neuro_ideal     0.3183
anova(fit_strong_neuro_ideal, fit_strict_neuro_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong_neuro_ideal 12 5247.7 5315.4 24.810                         
fit_strict_neuro_ideal 15 5243.2 5297.3 26.319     1.5092     0       3
                       Pr(>Chisq)
fit_strong_neuro_ideal           
fit_strict_neuro_ideal     0.6801

Very good model fit across all stages of measurement invariance. Chi^2 tests indicate that the test for weak measurement invariance is (barely) violated. Tests for strong and strict measurement invariance hold up, though. Probably ok to proceed, anyways.

4.2.9 Openness: current-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t1 + lambda1*openn_curr_par1_t1 + openn_curr_par2_t1 + openn_curr_par3_t1
openn_curr2 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + openn_curr_par2_t2 + openn_curr_par3_t2

# Intercepts
openn_curr_par1_t1 ~ i1*1
openn_curr_par2_t1 ~ 1
openn_curr_par3_t1 ~ 1

openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ 1
openn_curr_par3_t2 ~ 1

# Unique Variances
openn_curr_par1_t1 ~~ openn_curr_par1_t1
openn_curr_par2_t1 ~~ openn_curr_par2_t1
openn_curr_par3_t1 ~~ openn_curr_par3_t1

openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_configural_openn_curr <- cfa(configural_openn_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_openn_curr, fit.measures = TRUE)

# Weak invariance model
weak_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t1 + lambda1*openn_curr_par1_t1 + lambda2*openn_curr_par2_t1 + lambda3*openn_curr_par3_t1
openn_curr2 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2

# Intercepts
openn_curr_par1_t1 ~ i1*1
openn_curr_par2_t1 ~ 1
openn_curr_par3_t1 ~ 1

openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ 1
openn_curr_par3_t2 ~ 1

# Unique Variances
openn_curr_par1_t1 ~~ openn_curr_par1_t1
openn_curr_par2_t1 ~~ openn_curr_par2_t1
openn_curr_par3_t1 ~~ openn_curr_par3_t1

openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_weak_openn_curr <- cfa(weak_openn_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_openn_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t1 + lambda1*openn_curr_par1_t1 + lambda2*openn_curr_par2_t1 + lambda3*openn_curr_par3_t1
openn_curr2 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2

# Intercepts
openn_curr_par1_t1 ~ i1*1
openn_curr_par2_t1 ~ i2*1
openn_curr_par3_t1 ~ i3*1

openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ i2*1
openn_curr_par3_t2 ~ i3*1

# Unique Variances
openn_curr_par1_t1 ~~ openn_curr_par1_t1
openn_curr_par2_t1 ~~ openn_curr_par2_t1
openn_curr_par3_t1 ~~ openn_curr_par3_t1

openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strong_openn_curr <- cfa(strong_openn_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_openn_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t1 + lambda1*openn_curr_par1_t1 + lambda2*openn_curr_par2_t1 + lambda3*openn_curr_par3_t1
openn_curr2 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2

# Intercepts
openn_curr_par1_t1 ~ i1*1
openn_curr_par2_t1 ~ i2*1
openn_curr_par3_t1 ~ i3*1

openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ i2*1
openn_curr_par3_t2 ~ i3*1

# Unique Variances
openn_curr_par1_t1 ~~ u1*openn_curr_par1_t1
openn_curr_par2_t1 ~~ u2*openn_curr_par2_t1
openn_curr_par3_t1 ~~ u3*openn_curr_par3_t1

openn_curr_par1_t2 ~~ u1*openn_curr_par1_t2
openn_curr_par2_t2 ~~ u2*openn_curr_par2_t2
openn_curr_par3_t2 ~~ u3*openn_curr_par3_t2

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strict_openn_curr <- cfa(strict_openn_curr, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_openn_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  155. 6334. 6420. 0.935 0.878 0.165 0.0370
2 weak         674    17  156. 6330. 6407. 0.936 0.903 0.147 0.0382
3 strong       674    15  160. 6330. 6398. 0.935 0.918 0.135 0.0396
4 strict       674    12  166. 6330. 6384. 0.933 0.933 0.122 0.0421
# chi-square difference test for nested models 
anova(fit_configural_openn_curr, fit_weak_openn_curr)

Chi-Squared Difference Test

                          Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural_openn_curr  8 6333.8 6419.6 155.48                         
fit_weak_openn_curr       10 6330.1 6406.8 155.75    0.26746     0       2
                          Pr(>Chisq)
fit_configural_openn_curr           
fit_weak_openn_curr           0.8748
anova(fit_weak_openn_curr, fit_strong_openn_curr)

Chi-Squared Difference Test

                      Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak_openn_curr   10 6330.1 6406.8 155.75                            
fit_strong_openn_curr 12 6330.0 6397.7 159.66      3.914 0.037681       2
                      Pr(>Chisq)
fit_weak_openn_curr             
fit_strong_openn_curr     0.1413
anova(fit_strong_openn_curr, fit_strict_openn_curr)

Chi-Squared Difference Test

                      Df  AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_openn_curr 12 6330 6397.7 159.66                            
fit_strict_openn_curr 15 6330 6384.2 165.68     6.0204 0.038649       3
                      Pr(>Chisq)
fit_strong_openn_curr           
fit_strict_openn_curr     0.1106

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.2.10 Openness: ideal-self (from T1 to T2)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t1 + lambda1*openn_ideal_par1_t1 + openn_ideal_par2_t1 + openn_ideal_par3_t1
openn_ideal2 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + openn_ideal_par2_t2 + openn_ideal_par3_t2

# Intercepts
openn_ideal_par1_t1 ~ i1*1
openn_ideal_par2_t1 ~ 1
openn_ideal_par3_t1 ~ 1

openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ 1
openn_ideal_par3_t2 ~ 1

# Unique Variances
openn_ideal_par1_t1 ~~ openn_ideal_par1_t1
openn_ideal_par2_t1 ~~ openn_ideal_par2_t1
openn_ideal_par3_t1 ~~ openn_ideal_par3_t1

openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_configural_openn_ideal <- cfa(configural_openn_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural_openn_ideal, fit.measures = TRUE)

# Weak invariance model
weak_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t1 + lambda1*openn_ideal_par1_t1 + lambda2*openn_ideal_par2_t1 + lambda3*openn_ideal_par3_t1
openn_ideal2 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2

# Intercepts
openn_ideal_par1_t1 ~ i1*1
openn_ideal_par2_t1 ~ 1
openn_ideal_par3_t1 ~ 1

openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ 1
openn_ideal_par3_t2 ~ 1

# Unique Variances
openn_ideal_par1_t1 ~~ openn_ideal_par1_t1
openn_ideal_par2_t1 ~~ openn_ideal_par2_t1
openn_ideal_par3_t1 ~~ openn_ideal_par3_t1

openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_weak_openn_ideal <- cfa(weak_openn_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak_openn_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t1 + lambda1*openn_ideal_par1_t1 + lambda2*openn_ideal_par2_t1 + lambda3*openn_ideal_par3_t1
openn_ideal2 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2

# Intercepts
openn_ideal_par1_t1 ~ i1*1
openn_ideal_par2_t1 ~ i2*1
openn_ideal_par3_t1 ~ i3*1

openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ i2*1
openn_ideal_par3_t2 ~ i3*1

# Unique Variances
openn_ideal_par1_t1 ~~ openn_ideal_par1_t1
openn_ideal_par2_t1 ~~ openn_ideal_par2_t1
openn_ideal_par3_t1 ~~ openn_ideal_par3_t1

openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strong_openn_ideal <- cfa(strong_openn_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong_openn_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t1 + lambda1*openn_ideal_par1_t1 + lambda2*openn_ideal_par2_t1 + lambda3*openn_ideal_par3_t1
openn_ideal2 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2

# Intercepts
openn_ideal_par1_t1 ~ i1*1
openn_ideal_par2_t1 ~ i2*1
openn_ideal_par3_t1 ~ i3*1

openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ i2*1
openn_ideal_par3_t2 ~ i3*1

# Unique Variances
openn_ideal_par1_t1 ~~ u1*openn_ideal_par1_t1
openn_ideal_par2_t1 ~~ u2*openn_ideal_par2_t1
openn_ideal_par3_t1 ~~ u3*openn_ideal_par3_t1

openn_ideal_par1_t2 ~~ u1*openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ u2*openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ u3*openn_ideal_par3_t2

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strict_openn_ideal <- cfa(strict_openn_ideal, data = df_sbsa2_wide_pers %>% filter(rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict_openn_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   674    19  162. 6090. 6176. 0.886 0.786 0.169 0.0648
2 weak         674    17  168. 6092. 6169. 0.883 0.824 0.153 0.0844
3 strong       674    15  173. 6093. 6161. 0.880 0.851 0.141 0.0808
4 strict       674    12  182. 6096. 6150. 0.876 0.876 0.128 0.0711
# chi-square difference test for nested models 
anova(fit_configural_openn_ideal, fit_weak_openn_ideal)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural_openn_ideal  8 6090.1 6175.9 162.04                            
fit_weak_openn_ideal       10 6092.1 6168.8 168.04     5.9987 0.054465       2
                           Pr(>Chisq)  
fit_configural_openn_ideal             
fit_weak_openn_ideal          0.04982 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_weak_openn_ideal, fit_strong_openn_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak_openn_ideal   10 6092.1 6168.8 168.04                            
fit_strong_openn_ideal 12 6093.1 6160.8 173.05     5.0096 0.047251       2
                       Pr(>Chisq)  
fit_weak_openn_ideal               
fit_strong_openn_ideal    0.08169 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit_strong_openn_ideal, fit_strict_openn_ideal)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong_openn_ideal 12 6093.1 6160.8 173.05                            
fit_strict_openn_ideal 15 6095.8 6150.0 181.78     8.7264 0.053217       3
                       Pr(>Chisq)  
fit_strong_openn_ideal             
fit_strict_openn_ideal    0.03316 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model fit not satisfactory across all stages of measurement invariance. Chi^2 tests indicate that the test for weak measurement invariance is just about violated at (very close to .05, though). Otherwise, strong measurement invariance is given. Probably ok to proceed!

4.3 Big Five: from T2 to T3

Testing for measurement invariance of the latent BFI-2 traits across time, from T2 to T3.

4.3.1 Extraversion: current-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + extra_curr_par2_t2 + extra_curr_par3_t2
extra_curr2 =~ NA*extra_curr_par1_t3 + lambda1*extra_curr_par1_t3 + extra_curr_par2_t3 + extra_curr_par3_t3

# Intercepts
extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ 1
extra_curr_par3_t2 ~ 1

extra_curr_par1_t3 ~ i1*1
extra_curr_par2_t3 ~ 1
extra_curr_par3_t3 ~ 1

# Unique Variances
extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

extra_curr_par1_t3 ~~ extra_curr_par1_t3
extra_curr_par2_t3 ~~ extra_curr_par2_t3
extra_curr_par3_t3 ~~ extra_curr_par3_t3

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_configural2_extra_curr <- cfa(configural2_extra_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_extra_curr, fit.measures = TRUE)

# Weak invariance model
weak2_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2
extra_curr2 =~ NA*extra_curr_par1_t3 + lambda1*extra_curr_par1_t3 + lambda2*extra_curr_par2_t3 + lambda3*extra_curr_par3_t3

# Intercepts
extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ 1
extra_curr_par3_t2 ~ 1

extra_curr_par1_t3 ~ i1*1
extra_curr_par2_t3 ~ 1
extra_curr_par3_t3 ~ 1

# Unique Variances
extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

extra_curr_par1_t3 ~~ extra_curr_par1_t3
extra_curr_par2_t3 ~~ extra_curr_par2_t3
extra_curr_par3_t3 ~~ extra_curr_par3_t3

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_weak2_extra_curr <- cfa(weak2_extra_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_extra_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2
extra_curr2 =~ NA*extra_curr_par1_t3 + lambda1*extra_curr_par1_t3 + lambda2*extra_curr_par2_t3 + lambda3*extra_curr_par3_t3

# Intercepts
extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ i2*1
extra_curr_par3_t2 ~ i3*1

extra_curr_par1_t3 ~ i1*1
extra_curr_par2_t3 ~ i2*1
extra_curr_par3_t3 ~ i3*1

# Unique Variances
extra_curr_par1_t2 ~~ extra_curr_par1_t2
extra_curr_par2_t2 ~~ extra_curr_par2_t2
extra_curr_par3_t2 ~~ extra_curr_par3_t2

extra_curr_par1_t3 ~~ extra_curr_par1_t3
extra_curr_par2_t3 ~~ extra_curr_par2_t3
extra_curr_par3_t3 ~~ extra_curr_par3_t3

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strong2_extra_curr <- cfa(strong2_extra_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_extra_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_extra_curr <- '
# Define the latent factors
extra_curr1 =~ NA*extra_curr_par1_t2 + lambda1*extra_curr_par1_t2 + lambda2*extra_curr_par2_t2 + lambda3*extra_curr_par3_t2
extra_curr2 =~ NA*extra_curr_par1_t3 + lambda1*extra_curr_par1_t3 + lambda2*extra_curr_par2_t3 + lambda3*extra_curr_par3_t3

# Intercepts
extra_curr_par1_t2 ~ i1*1
extra_curr_par2_t2 ~ i2*1
extra_curr_par3_t2 ~ i3*1

extra_curr_par1_t3 ~ i1*1
extra_curr_par2_t3 ~ i2*1
extra_curr_par3_t3 ~ i3*1

# Unique Variances
extra_curr_par1_t2 ~~ u1*extra_curr_par1_t2
extra_curr_par2_t2 ~~ u2*extra_curr_par2_t2
extra_curr_par3_t2 ~~ u3*extra_curr_par3_t2

extra_curr_par1_t3 ~~ u1*extra_curr_par1_t3
extra_curr_par2_t3 ~~ u2*extra_curr_par2_t3
extra_curr_par3_t3 ~~ u3*extra_curr_par3_t3

# Latent Variable Means
extra_curr1 ~ 0*1
extra_curr2 ~ 1

# Latent Variable Variances and Covariance
extra_curr1 ~~ 1*extra_curr1
extra_curr2 ~~ extra_curr2
extra_curr1 ~~ extra_curr2
'
fit_strict2_extra_curr <- cfa(strict2_extra_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_extra_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_extra_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  398. 6335. 6418. 0.808 0.640 0.291 0.0696
2 weak         577    17  399. 6333. 6407. 0.808 0.713 0.260 0.0747
3 strong       577    15  402. 6332. 6397. 0.808 0.760 0.237 0.0726
4 strict       577    12  403. 6327. 6379. 0.809 0.809 0.212 0.0731
# chi-square difference test for nested models 
anova(fit_configural2_extra_curr, fit_weak2_extra_curr)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_extra_curr  8 6335.3 6418.1 397.63                         
fit_weak2_extra_curr       10 6333.0 6407.1 399.35     1.7174     0       2
                           Pr(>Chisq)
fit_configural2_extra_curr           
fit_weak2_extra_curr           0.4237
anova(fit_weak2_extra_curr, fit_strong2_extra_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak2_extra_curr   10 6333.0 6407.1 399.35                            
fit_strong2_extra_curr 12 6331.8 6397.2 402.16     2.8056 0.026421       2
                       Pr(>Chisq)
fit_weak2_extra_curr             
fit_strong2_extra_curr     0.2459
anova(fit_strong2_extra_curr, fit_strict2_extra_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_extra_curr 12 6331.8 6397.2 402.16                         
fit_strict2_extra_curr 15 6326.7 6379.0 403.07    0.91245     0       3
                       Pr(>Chisq)
fit_strong2_extra_curr           
fit_strict2_extra_curr     0.8224

Model fit still not satisfactory. Chi^2 tests indicate that strict measurement invariance is given.

4.3.2 Extraversion: ideal-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + extra_ideal_par2_t2 + extra_ideal_par3_t2
extra_ideal2 =~ NA*extra_ideal_par1_t3 + lambda1*extra_ideal_par1_t3 + extra_ideal_par2_t3 + extra_ideal_par3_t3

# Intercepts
extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ 1
extra_ideal_par3_t2 ~ 1

extra_ideal_par1_t3 ~ i1*1
extra_ideal_par2_t3 ~ 1
extra_ideal_par3_t3 ~ 1

# Unique Variances
extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

extra_ideal_par1_t3 ~~ extra_ideal_par1_t3
extra_ideal_par2_t3 ~~ extra_ideal_par2_t3
extra_ideal_par3_t3 ~~ extra_ideal_par3_t3

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_configural2_extra_ideal <- cfa(configural2_extra_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_extra_ideal, fit.measures = TRUE)

# Weak invariance model
weak2_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2
extra_ideal2 =~ NA*extra_ideal_par1_t3 + lambda1*extra_ideal_par1_t3 + lambda2*extra_ideal_par2_t3 + lambda3*extra_ideal_par3_t3

# Intercepts
extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ 1
extra_ideal_par3_t2 ~ 1

extra_ideal_par1_t3 ~ i1*1
extra_ideal_par2_t3 ~ 1
extra_ideal_par3_t3 ~ 1

# Unique Variances
extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

extra_ideal_par1_t3 ~~ extra_ideal_par1_t3
extra_ideal_par2_t3 ~~ extra_ideal_par2_t3
extra_ideal_par3_t3 ~~ extra_ideal_par3_t3

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_weak2_extra_ideal <- cfa(weak2_extra_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_extra_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2
extra_ideal2 =~ NA*extra_ideal_par1_t3 + lambda1*extra_ideal_par1_t3 + lambda2*extra_ideal_par2_t3 + lambda3*extra_ideal_par3_t3

# Intercepts
extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ i2*1
extra_ideal_par3_t2 ~ i3*1

extra_ideal_par1_t3 ~ i1*1
extra_ideal_par2_t3 ~ i2*1
extra_ideal_par3_t3 ~ i3*1

# Unique Variances
extra_ideal_par1_t2 ~~ extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ extra_ideal_par3_t2

extra_ideal_par1_t3 ~~ extra_ideal_par1_t3
extra_ideal_par2_t3 ~~ extra_ideal_par2_t3
extra_ideal_par3_t3 ~~ extra_ideal_par3_t3

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strong2_extra_ideal <- cfa(strong2_extra_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_extra_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_extra_ideal <- '
# Define the latent factors
extra_ideal1 =~ NA*extra_ideal_par1_t2 + lambda1*extra_ideal_par1_t2 + lambda2*extra_ideal_par2_t2 + lambda3*extra_ideal_par3_t2
extra_ideal2 =~ NA*extra_ideal_par1_t3 + lambda1*extra_ideal_par1_t3 + lambda2*extra_ideal_par2_t3 + lambda3*extra_ideal_par3_t3

# Intercepts
extra_ideal_par1_t2 ~ i1*1
extra_ideal_par2_t2 ~ i2*1
extra_ideal_par3_t2 ~ i3*1

extra_ideal_par1_t3 ~ i1*1
extra_ideal_par2_t3 ~ i2*1
extra_ideal_par3_t3 ~ i3*1

# Unique Variances
extra_ideal_par1_t2 ~~ u1*extra_ideal_par1_t2
extra_ideal_par2_t2 ~~ u2*extra_ideal_par2_t2
extra_ideal_par3_t2 ~~ u3*extra_ideal_par3_t2

extra_ideal_par1_t3 ~~ u1*extra_ideal_par1_t3
extra_ideal_par2_t3 ~~ u2*extra_ideal_par2_t3
extra_ideal_par3_t3 ~~ u3*extra_ideal_par3_t3

# Latent Variable Means
extra_ideal1 ~ 0*1
extra_ideal2 ~ 1

# Latent Variable Variances and Covariance
extra_ideal1 ~~ 1*extra_ideal1
extra_ideal2 ~~ extra_ideal2
extra_ideal1 ~~ extra_ideal2
'
fit_strict2_extra_ideal <- cfa(strict2_extra_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_extra_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_extra_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  169. 5357. 5440. 0.844 0.707 0.187 0.0617
2 weak         577    17  170. 5353. 5427. 0.845 0.768 0.166 0.0639
3 strong       577    15  170. 5350. 5415. 0.847 0.808 0.151 0.0637
4 strict       577    12  172. 5346. 5398. 0.847 0.847 0.135 0.0675
# chi-square difference test for nested models 
anova(fit_configural2_extra_ideal, fit_weak2_extra_ideal)

Chi-Squared Difference Test

                            Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_extra_ideal  8 5356.9 5439.7 169.37                         
fit_weak2_extra_ideal       10 5353.3 5427.4 169.75    0.38629     0       2
                            Pr(>Chisq)
fit_configural2_extra_ideal           
fit_weak2_extra_ideal           0.8244
anova(fit_weak2_extra_ideal, fit_strong2_extra_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak2_extra_ideal   10 5353.3 5427.4 169.75                         
fit_strong2_extra_ideal 12 5349.9 5415.2 170.34     0.5878     0       2
                        Pr(>Chisq)
fit_weak2_extra_ideal             
fit_strong2_extra_ideal     0.7454
anova(fit_strong2_extra_ideal, fit_strict2_extra_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_extra_ideal 12 5349.9 5415.2 170.34                         
fit_strict2_extra_ideal 15 5345.9 5398.2 172.39     2.0524     0       3
                        Pr(>Chisq)
fit_strong2_extra_ideal           
fit_strict2_extra_ideal     0.5616

Model fit still not satisfactory. Chi^2 tests indicate that strict measurement invariance is given.

4.3.3 Agreeableness: current-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + agree_curr_par2_t2 + agree_curr_par3_t2
agree_curr2 =~ NA*agree_curr_par1_t3 + lambda1*agree_curr_par1_t3 + agree_curr_par2_t3 + agree_curr_par3_t3

# Intercepts
agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ 1
agree_curr_par3_t2 ~ 1

agree_curr_par1_t3 ~ i1*1
agree_curr_par2_t3 ~ 1
agree_curr_par3_t3 ~ 1

# Unique Variances
agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

agree_curr_par1_t3 ~~ agree_curr_par1_t3
agree_curr_par2_t3 ~~ agree_curr_par2_t3
agree_curr_par3_t3 ~~ agree_curr_par3_t3

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_configural2_agree_curr <- cfa(configural2_agree_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_agree_curr, fit.measures = TRUE)

# Weak invariance model
weak2_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2
agree_curr2 =~ NA*agree_curr_par1_t3 + lambda1*agree_curr_par1_t3 + lambda2*agree_curr_par2_t3 + lambda3*agree_curr_par3_t3

# Intercepts
agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ 1
agree_curr_par3_t2 ~ 1

agree_curr_par1_t3 ~ i1*1
agree_curr_par2_t3 ~ 1
agree_curr_par3_t3 ~ 1

# Unique Variances
agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

agree_curr_par1_t3 ~~ agree_curr_par1_t3
agree_curr_par2_t3 ~~ agree_curr_par2_t3
agree_curr_par3_t3 ~~ agree_curr_par3_t3

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_weak2_agree_curr <- cfa(weak2_agree_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_agree_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2
agree_curr2 =~ NA*agree_curr_par1_t3 + lambda1*agree_curr_par1_t3 + lambda2*agree_curr_par2_t3 + lambda3*agree_curr_par3_t3

# Intercepts
agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ i2*1
agree_curr_par3_t2 ~ i3*1

agree_curr_par1_t3 ~ i1*1
agree_curr_par2_t3 ~ i2*1
agree_curr_par3_t3 ~ i3*1

# Unique Variances
agree_curr_par1_t2 ~~ agree_curr_par1_t2
agree_curr_par2_t2 ~~ agree_curr_par2_t2
agree_curr_par3_t2 ~~ agree_curr_par3_t2

agree_curr_par1_t3 ~~ agree_curr_par1_t3
agree_curr_par2_t3 ~~ agree_curr_par2_t3
agree_curr_par3_t3 ~~ agree_curr_par3_t3

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strong2_agree_curr <- cfa(strong2_agree_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_agree_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_agree_curr <- '
# Define the latent factors
agree_curr1 =~ NA*agree_curr_par1_t2 + lambda1*agree_curr_par1_t2 + lambda2*agree_curr_par2_t2 + lambda3*agree_curr_par3_t2
agree_curr2 =~ NA*agree_curr_par1_t3 + lambda1*agree_curr_par1_t3 + lambda2*agree_curr_par2_t3 + lambda3*agree_curr_par3_t3

# Intercepts
agree_curr_par1_t2 ~ i1*1
agree_curr_par2_t2 ~ i2*1
agree_curr_par3_t2 ~ i3*1

agree_curr_par1_t3 ~ i1*1
agree_curr_par2_t3 ~ i2*1
agree_curr_par3_t3 ~ i3*1

# Unique Variances
agree_curr_par1_t2 ~~ u1*agree_curr_par1_t2
agree_curr_par2_t2 ~~ u2*agree_curr_par2_t2
agree_curr_par3_t2 ~~ u3*agree_curr_par3_t2

agree_curr_par1_t3 ~~ u1*agree_curr_par1_t3
agree_curr_par2_t3 ~~ u2*agree_curr_par2_t3
agree_curr_par3_t3 ~~ u3*agree_curr_par3_t3

# Latent Variable Means
agree_curr1 ~ 0*1
agree_curr2 ~ 1

# Latent Variable Variances and Covariance
agree_curr1 ~~ 1*agree_curr1
agree_curr2 ~~ agree_curr2
agree_curr1 ~~ agree_curr2
'
fit_strict2_agree_curr <- cfa(strict2_agree_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_agree_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_agree_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  239. 5005. 5088. 0.839 0.698 0.224 0.0754
2 weak         577    17  240. 5002. 5076. 0.840 0.760 0.200 0.0764
3 strong       577    15  240. 4998. 5063. 0.841 0.802 0.181 0.0767
4 strict       577    12  242. 4994. 5046. 0.842 0.842 0.162 0.0822
# chi-square difference test for nested models 
anova(fit_configural2_agree_curr, fit_weak2_agree_curr)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_agree_curr  8 5005.3 5088.1 239.49                         
fit_weak2_agree_curr       10 5001.6 5075.7 239.74    0.24587     0       2
                           Pr(>Chisq)
fit_configural2_agree_curr           
fit_weak2_agree_curr           0.8843
anova(fit_weak2_agree_curr, fit_strong2_agree_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak2_agree_curr   10 5001.6 5075.7 239.74                         
fit_strong2_agree_curr 12 4997.7 5063.1 239.83   0.093468     0       2
                       Pr(>Chisq)
fit_weak2_agree_curr             
fit_strong2_agree_curr     0.9543
anova(fit_strong2_agree_curr, fit_strict2_agree_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_agree_curr 12 4997.7 5063.1 239.83                         
fit_strict2_agree_curr 15 4993.8 5046.1 241.97     2.1344     0       3
                       Pr(>Chisq)
fit_strong2_agree_curr           
fit_strict2_agree_curr      0.545

Model fit still not satisfactory. Chi^2 tests indicate that strict measurement invariance is given.

4.3.4 Agreeableness: ideal-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + agree_ideal_par2_t2 + agree_ideal_par3_t2
agree_ideal2 =~ NA*agree_ideal_par1_t3 + lambda1*agree_ideal_par1_t3 + agree_ideal_par2_t3 + agree_ideal_par3_t3

# Intercepts
agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ 1
agree_ideal_par3_t2 ~ 1

agree_ideal_par1_t3 ~ i1*1
agree_ideal_par2_t3 ~ 1
agree_ideal_par3_t3 ~ 1

# Unique Variances
agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

agree_ideal_par1_t3 ~~ agree_ideal_par1_t3
agree_ideal_par2_t3 ~~ agree_ideal_par2_t3
agree_ideal_par3_t3 ~~ agree_ideal_par3_t3

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_configural2_agree_ideal <- cfa(configural2_agree_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_agree_ideal, fit.measures = TRUE)

# Weak invariance model
weak2_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2
agree_ideal2 =~ NA*agree_ideal_par1_t3 + lambda1*agree_ideal_par1_t3 + lambda2*agree_ideal_par2_t3 + lambda3*agree_ideal_par3_t3

# Intercepts
agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ 1
agree_ideal_par3_t2 ~ 1

agree_ideal_par1_t3 ~ i1*1
agree_ideal_par2_t3 ~ 1
agree_ideal_par3_t3 ~ 1

# Unique Variances
agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

agree_ideal_par1_t3 ~~ agree_ideal_par1_t3
agree_ideal_par2_t3 ~~ agree_ideal_par2_t3
agree_ideal_par3_t3 ~~ agree_ideal_par3_t3

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_weak2_agree_ideal <- cfa(weak2_agree_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_agree_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2
agree_ideal2 =~ NA*agree_ideal_par1_t3 + lambda1*agree_ideal_par1_t3 + lambda2*agree_ideal_par2_t3 + lambda3*agree_ideal_par3_t3

# Intercepts
agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ i2*1
agree_ideal_par3_t2 ~ i3*1

agree_ideal_par1_t3 ~ i1*1
agree_ideal_par2_t3 ~ i2*1
agree_ideal_par3_t3 ~ i3*1

# Unique Variances
agree_ideal_par1_t2 ~~ agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ agree_ideal_par3_t2

agree_ideal_par1_t3 ~~ agree_ideal_par1_t3
agree_ideal_par2_t3 ~~ agree_ideal_par2_t3
agree_ideal_par3_t3 ~~ agree_ideal_par3_t3

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strong2_agree_ideal <- cfa(strong2_agree_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_agree_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_agree_ideal <- '
# Define the latent factors
agree_ideal1 =~ NA*agree_ideal_par1_t2 + lambda1*agree_ideal_par1_t2 + lambda2*agree_ideal_par2_t2 + lambda3*agree_ideal_par3_t2
agree_ideal2 =~ NA*agree_ideal_par1_t3 + lambda1*agree_ideal_par1_t3 + lambda2*agree_ideal_par2_t3 + lambda3*agree_ideal_par3_t3

# Intercepts
agree_ideal_par1_t2 ~ i1*1
agree_ideal_par2_t2 ~ i2*1
agree_ideal_par3_t2 ~ i3*1

agree_ideal_par1_t3 ~ i1*1
agree_ideal_par2_t3 ~ i2*1
agree_ideal_par3_t3 ~ i3*1

# Unique Variances
agree_ideal_par1_t2 ~~ u1*agree_ideal_par1_t2
agree_ideal_par2_t2 ~~ u2*agree_ideal_par2_t2
agree_ideal_par3_t2 ~~ u3*agree_ideal_par3_t2

agree_ideal_par1_t3 ~~ u1*agree_ideal_par1_t3
agree_ideal_par2_t3 ~~ u2*agree_ideal_par2_t3
agree_ideal_par3_t3 ~~ u3*agree_ideal_par3_t3

# Latent Variable Means
agree_ideal1 ~ 0*1
agree_ideal2 ~ 1

# Latent Variable Variances and Covariance
agree_ideal1 ~~ 1*agree_ideal1
agree_ideal2 ~~ agree_ideal2
agree_ideal1 ~~ agree_ideal2
'
fit_strict2_agree_ideal <- cfa(strict2_agree_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_agree_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_agree_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  183. 4928. 5011. 0.891 0.795 0.195 0.0537
2 weak         577    17  186. 4927. 5001. 0.890 0.835 0.175 0.0717
3 strong       577    15  188. 4924. 4990. 0.891 0.863 0.159 0.0724
4 strict       577    12  189. 4919. 4972. 0.892 0.892 0.142 0.0654
# chi-square difference test for nested models 
anova(fit_configural2_agree_ideal, fit_weak2_agree_ideal)

Chi-Squared Difference Test

                            Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural2_agree_ideal  8 4928.0 5010.8 183.39                            
fit_weak2_agree_ideal       10 4927.1 5001.2 186.45     3.0622 0.030339       2
                            Pr(>Chisq)
fit_configural2_agree_ideal           
fit_weak2_agree_ideal           0.2163
anova(fit_weak2_agree_ideal, fit_strong2_agree_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak2_agree_ideal   10 4927.1 5001.2 186.45                         
fit_strong2_agree_ideal 12 4924.5 4989.8 187.84     1.3937     0       2
                        Pr(>Chisq)
fit_weak2_agree_ideal             
fit_strong2_agree_ideal     0.4982
anova(fit_strong2_agree_ideal, fit_strict2_agree_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_agree_ideal 12 4924.5 4989.8 187.84                         
fit_strict2_agree_ideal 15 4919.5 4971.7 188.82    0.97691     0       3
                        Pr(>Chisq)
fit_strong2_agree_ideal           
fit_strict2_agree_ideal     0.8068

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.3.5 Conscientiousness: current-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + consc_curr_par2_t2 + consc_curr_par3_t2
consc_curr2 =~ NA*consc_curr_par1_t3 + lambda1*consc_curr_par1_t3 + consc_curr_par2_t3 + consc_curr_par3_t3

# Intercepts
consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ 1
consc_curr_par3_t2 ~ 1

consc_curr_par1_t3 ~ i1*1
consc_curr_par2_t3 ~ 1
consc_curr_par3_t3 ~ 1

# Unique Variances
consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

consc_curr_par1_t3 ~~ consc_curr_par1_t3
consc_curr_par2_t3 ~~ consc_curr_par2_t3
consc_curr_par3_t3 ~~ consc_curr_par3_t3

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_configural2_consc_curr <- cfa(configural2_consc_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_consc_curr, fit.measures = TRUE)

# Weak invariance model
weak2_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2
consc_curr2 =~ NA*consc_curr_par1_t3 + lambda1*consc_curr_par1_t3 + lambda2*consc_curr_par2_t3 + lambda3*consc_curr_par3_t3

# Intercepts
consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ 1
consc_curr_par3_t2 ~ 1

consc_curr_par1_t3 ~ i1*1
consc_curr_par2_t3 ~ 1
consc_curr_par3_t3 ~ 1

# Unique Variances
consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

consc_curr_par1_t3 ~~ consc_curr_par1_t3
consc_curr_par2_t3 ~~ consc_curr_par2_t3
consc_curr_par3_t3 ~~ consc_curr_par3_t3

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_weak2_consc_curr <- cfa(weak2_consc_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_consc_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2
consc_curr2 =~ NA*consc_curr_par1_t3 + lambda1*consc_curr_par1_t3 + lambda2*consc_curr_par2_t3 + lambda3*consc_curr_par3_t3

# Intercepts
consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ i2*1
consc_curr_par3_t2 ~ i3*1

consc_curr_par1_t3 ~ i1*1
consc_curr_par2_t3 ~ i2*1
consc_curr_par3_t3 ~ i3*1

# Unique Variances
consc_curr_par1_t2 ~~ consc_curr_par1_t2
consc_curr_par2_t2 ~~ consc_curr_par2_t2
consc_curr_par3_t2 ~~ consc_curr_par3_t2

consc_curr_par1_t3 ~~ consc_curr_par1_t3
consc_curr_par2_t3 ~~ consc_curr_par2_t3
consc_curr_par3_t3 ~~ consc_curr_par3_t3

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strong2_consc_curr <- cfa(strong2_consc_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_consc_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_consc_curr <- '
# Define the latent factors
consc_curr1 =~ NA*consc_curr_par1_t2 + lambda1*consc_curr_par1_t2 + lambda2*consc_curr_par2_t2 + lambda3*consc_curr_par3_t2
consc_curr2 =~ NA*consc_curr_par1_t3 + lambda1*consc_curr_par1_t3 + lambda2*consc_curr_par2_t3 + lambda3*consc_curr_par3_t3

# Intercepts
consc_curr_par1_t2 ~ i1*1
consc_curr_par2_t2 ~ i2*1
consc_curr_par3_t2 ~ i3*1

consc_curr_par1_t3 ~ i1*1
consc_curr_par2_t3 ~ i2*1
consc_curr_par3_t3 ~ i3*1

# Unique Variances
consc_curr_par1_t2 ~~ u1*consc_curr_par1_t2
consc_curr_par2_t2 ~~ u2*consc_curr_par2_t2
consc_curr_par3_t2 ~~ u3*consc_curr_par3_t2

consc_curr_par1_t3 ~~ u1*consc_curr_par1_t3
consc_curr_par2_t3 ~~ u2*consc_curr_par2_t3
consc_curr_par3_t3 ~~ u3*consc_curr_par3_t3

# Latent Variable Means
consc_curr1 ~ 0*1
consc_curr2 ~ 1

# Latent Variable Variances and Covariance
consc_curr1 ~~ 1*consc_curr1
consc_curr2 ~~ consc_curr2
consc_curr1 ~~ consc_curr2
'
fit_strict2_consc_curr <- cfa(strict2_consc_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_consc_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_consc_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  173. 5578. 5661. 0.940 0.888 0.189 0.0312
2 weak         577    17  173. 5575. 5649. 0.941 0.912 0.168 0.0317
3 strong       577    15  174. 5571. 5637. 0.942 0.927 0.153 0.0314
4 strict       577    12  174. 5566. 5618. 0.942 0.942 0.136 0.0317
# chi-square difference test for nested models 
anova(fit_configural2_consc_curr, fit_weak2_consc_curr)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_consc_curr  8 5578.5 5661.3 173.11                         
fit_weak2_consc_curr       10 5574.6 5648.7 173.29     0.1738     0       2
                           Pr(>Chisq)
fit_configural2_consc_curr           
fit_weak2_consc_curr           0.9168
anova(fit_weak2_consc_curr, fit_strong2_consc_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak2_consc_curr   10 5574.6 5648.7 173.29                         
fit_strong2_consc_curr 12 5571.1 5636.5 173.79    0.50808     0       2
                       Pr(>Chisq)
fit_weak2_consc_curr             
fit_strong2_consc_curr     0.7757
anova(fit_strong2_consc_curr, fit_strict2_consc_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_consc_curr 12 5571.1 5636.5 173.79                         
fit_strict2_consc_curr 15 5565.8 5618.1 174.44    0.64404     0       3
                       Pr(>Chisq)
fit_strong2_consc_curr           
fit_strict2_consc_curr     0.8863

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.3.6 Conscientiousness: ideal-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + consc_ideal_par2_t2 + consc_ideal_par3_t2
consc_ideal2 =~ NA*consc_ideal_par1_t3 + lambda1*consc_ideal_par1_t3 + consc_ideal_par2_t3 + consc_ideal_par3_t3

# Intercepts
consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ 1
consc_ideal_par3_t2 ~ 1

consc_ideal_par1_t3 ~ i1*1
consc_ideal_par2_t3 ~ 1
consc_ideal_par3_t3 ~ 1

# Unique Variances
consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

consc_ideal_par1_t3 ~~ consc_ideal_par1_t3
consc_ideal_par2_t3 ~~ consc_ideal_par2_t3
consc_ideal_par3_t3 ~~ consc_ideal_par3_t3

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_configural2_consc_ideal <- cfa(configural2_consc_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_consc_ideal, fit.measures = TRUE)

# Weak invariance model
weak2_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2
consc_ideal2 =~ NA*consc_ideal_par1_t3 + lambda1*consc_ideal_par1_t3 + lambda2*consc_ideal_par2_t3 + lambda3*consc_ideal_par3_t3

# Intercepts
consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ 1
consc_ideal_par3_t2 ~ 1

consc_ideal_par1_t3 ~ i1*1
consc_ideal_par2_t3 ~ 1
consc_ideal_par3_t3 ~ 1

# Unique Variances
consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

consc_ideal_par1_t3 ~~ consc_ideal_par1_t3
consc_ideal_par2_t3 ~~ consc_ideal_par2_t3
consc_ideal_par3_t3 ~~ consc_ideal_par3_t3

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_weak2_consc_ideal <- cfa(weak2_consc_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_consc_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2
consc_ideal2 =~ NA*consc_ideal_par1_t3 + lambda1*consc_ideal_par1_t3 + lambda2*consc_ideal_par2_t3 + lambda3*consc_ideal_par3_t3

# Intercepts
consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ i2*1
consc_ideal_par3_t2 ~ i3*1

consc_ideal_par1_t3 ~ i1*1
consc_ideal_par2_t3 ~ i2*1
consc_ideal_par3_t3 ~ i3*1

# Unique Variances
consc_ideal_par1_t2 ~~ consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ consc_ideal_par3_t2

consc_ideal_par1_t3 ~~ consc_ideal_par1_t3
consc_ideal_par2_t3 ~~ consc_ideal_par2_t3
consc_ideal_par3_t3 ~~ consc_ideal_par3_t3

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strong2_consc_ideal <- cfa(strong2_consc_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_consc_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_consc_ideal <- '
# Define the latent factors
consc_ideal1 =~ NA*consc_ideal_par1_t2 + lambda1*consc_ideal_par1_t2 + lambda2*consc_ideal_par2_t2 + lambda3*consc_ideal_par3_t2
consc_ideal2 =~ NA*consc_ideal_par1_t3 + lambda1*consc_ideal_par1_t3 + lambda2*consc_ideal_par2_t3 + lambda3*consc_ideal_par3_t3

# Intercepts
consc_ideal_par1_t2 ~ i1*1
consc_ideal_par2_t2 ~ i2*1
consc_ideal_par3_t2 ~ i3*1

consc_ideal_par1_t3 ~ i1*1
consc_ideal_par2_t3 ~ i2*1
consc_ideal_par3_t3 ~ i3*1

# Unique Variances
consc_ideal_par1_t2 ~~ u1*consc_ideal_par1_t2
consc_ideal_par2_t2 ~~ u2*consc_ideal_par2_t2
consc_ideal_par3_t2 ~~ u3*consc_ideal_par3_t2

consc_ideal_par1_t3 ~~ u1*consc_ideal_par1_t3
consc_ideal_par2_t3 ~~ u2*consc_ideal_par2_t3
consc_ideal_par3_t3 ~~ u3*consc_ideal_par3_t3

# Latent Variable Means
consc_ideal1 ~ 0*1
consc_ideal2 ~ 1

# Latent Variable Variances and Covariance
consc_ideal1 ~~ 1*consc_ideal1
consc_ideal2 ~~ consc_ideal2
consc_ideal1 ~~ consc_ideal2
'
fit_strict2_consc_ideal <- cfa(strict2_consc_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_consc_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_consc_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   577    19  70.8 4208. 4291. 0.959 0.923 0.117  0.0291
2 weak         577    17  73.4 4206. 4281. 0.959 0.938 0.105  0.0542
3 strong       577    15  75.8 4205. 4270. 0.958 0.948 0.0960 0.0561
4 strict       577    12  91.9 4215. 4267. 0.950 0.950 0.0942 0.0898
# chi-square difference test for nested models 
anova(fit_configural2_consc_ideal, fit_weak2_consc_ideal)

Chi-Squared Difference Test

                            Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural2_consc_ideal  8 4207.9 4290.7 70.821                            
fit_weak2_consc_ideal       10 4206.4 4280.5 73.376     2.5544 0.021919       2
                            Pr(>Chisq)
fit_configural2_consc_ideal           
fit_weak2_consc_ideal           0.2788
anova(fit_weak2_consc_ideal, fit_strong2_consc_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak2_consc_ideal   10 4206.4 4280.5 73.376                            
fit_strong2_consc_ideal 12 4204.8 4270.2 75.801     2.4256 0.019204       2
                        Pr(>Chisq)
fit_weak2_consc_ideal             
fit_strong2_consc_ideal     0.2974
anova(fit_strong2_consc_ideal, fit_strict2_consc_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong2_consc_ideal 12 4204.8 4270.2 75.801                            
fit_strict2_consc_ideal 15 4214.9 4267.2 91.852     16.051 0.086831       3
                        Pr(>Chisq)   
fit_strong2_consc_ideal              
fit_strict2_consc_ideal   0.001107 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strong measurement invariance is given.

4.3.7 Neuroticism: current-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + neuro_curr_par2_t2 + neuro_curr_par3_t2
neuro_curr2 =~ NA*neuro_curr_par1_t3 + lambda1*neuro_curr_par1_t3 + neuro_curr_par2_t3 + neuro_curr_par3_t3

# Intercepts
neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ 1
neuro_curr_par3_t2 ~ 1

neuro_curr_par1_t3 ~ i1*1
neuro_curr_par2_t3 ~ 1
neuro_curr_par3_t3 ~ 1

# Unique Variances
neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

neuro_curr_par1_t3 ~~ neuro_curr_par1_t3
neuro_curr_par2_t3 ~~ neuro_curr_par2_t3
neuro_curr_par3_t3 ~~ neuro_curr_par3_t3

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_configural2_neuro_curr <- cfa(configural2_neuro_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_neuro_curr, fit.measures = TRUE)

# Weak invariance model
weak2_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2
neuro_curr2 =~ NA*neuro_curr_par1_t3 + lambda1*neuro_curr_par1_t3 + lambda2*neuro_curr_par2_t3 + lambda3*neuro_curr_par3_t3

# Intercepts
neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ 1
neuro_curr_par3_t2 ~ 1

neuro_curr_par1_t3 ~ i1*1
neuro_curr_par2_t3 ~ 1
neuro_curr_par3_t3 ~ 1

# Unique Variances
neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

neuro_curr_par1_t3 ~~ neuro_curr_par1_t3
neuro_curr_par2_t3 ~~ neuro_curr_par2_t3
neuro_curr_par3_t3 ~~ neuro_curr_par3_t3

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_weak2_neuro_curr <- cfa(weak2_neuro_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_neuro_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2
neuro_curr2 =~ NA*neuro_curr_par1_t3 + lambda1*neuro_curr_par1_t3 + lambda2*neuro_curr_par2_t3 + lambda3*neuro_curr_par3_t3

# Intercepts
neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ i2*1
neuro_curr_par3_t2 ~ i3*1

neuro_curr_par1_t3 ~ i1*1
neuro_curr_par2_t3 ~ i2*1
neuro_curr_par3_t3 ~ i3*1

# Unique Variances
neuro_curr_par1_t2 ~~ neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ neuro_curr_par3_t2

neuro_curr_par1_t3 ~~ neuro_curr_par1_t3
neuro_curr_par2_t3 ~~ neuro_curr_par2_t3
neuro_curr_par3_t3 ~~ neuro_curr_par3_t3

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strong2_neuro_curr <- cfa(strong2_neuro_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_neuro_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_neuro_curr <- '
# Define the latent factors
neuro_curr1 =~ NA*neuro_curr_par1_t2 + lambda1*neuro_curr_par1_t2 + lambda2*neuro_curr_par2_t2 + lambda3*neuro_curr_par3_t2
neuro_curr2 =~ NA*neuro_curr_par1_t3 + lambda1*neuro_curr_par1_t3 + lambda2*neuro_curr_par2_t3 + lambda3*neuro_curr_par3_t3

# Intercepts
neuro_curr_par1_t2 ~ i1*1
neuro_curr_par2_t2 ~ i2*1
neuro_curr_par3_t2 ~ i3*1

neuro_curr_par1_t3 ~ i1*1
neuro_curr_par2_t3 ~ i2*1
neuro_curr_par3_t3 ~ i3*1

# Unique Variances
neuro_curr_par1_t2 ~~ u1*neuro_curr_par1_t2
neuro_curr_par2_t2 ~~ u2*neuro_curr_par2_t2
neuro_curr_par3_t2 ~~ u3*neuro_curr_par3_t2

neuro_curr_par1_t3 ~~ u1*neuro_curr_par1_t3
neuro_curr_par2_t3 ~~ u2*neuro_curr_par2_t3
neuro_curr_par3_t3 ~~ u3*neuro_curr_par3_t3

# Latent Variable Means
neuro_curr1 ~ 0*1
neuro_curr2 ~ 1

# Latent Variable Variances and Covariance
neuro_curr1 ~~ 1*neuro_curr1
neuro_curr2 ~~ neuro_curr2
neuro_curr1 ~~ neuro_curr2
'
fit_strict2_neuro_curr <- cfa(strict2_neuro_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_neuro_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_neuro_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   577    19  99.1 5872. 5955. 0.968 0.939 0.140  0.0219
2 weak         577    17  99.4 5868. 5942. 0.968 0.952 0.124  0.0232
3 strong       577    15 101.  5866. 5931. 0.968 0.961 0.113  0.0232
4 strict       577    12 101.  5860. 5913. 0.969 0.969 0.0999 0.0243
# chi-square difference test for nested models 
anova(fit_configural2_neuro_curr, fit_weak2_neuro_curr)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_neuro_curr  8 5872.1 5954.9 99.065                         
fit_weak2_neuro_curr       10 5868.4 5942.5 99.397    0.33158     0       2
                           Pr(>Chisq)
fit_configural2_neuro_curr           
fit_weak2_neuro_curr           0.8472
anova(fit_weak2_neuro_curr, fit_strong2_neuro_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC   Chisq Chisq diff RMSEA Df diff
fit_weak2_neuro_curr   10 5868.4 5942.5  99.397                         
fit_strong2_neuro_curr 12 5865.6 5930.9 100.582     1.1852     0       2
                       Pr(>Chisq)
fit_weak2_neuro_curr             
fit_strong2_neuro_curr     0.5529
anova(fit_strong2_neuro_curr, fit_strict2_neuro_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_neuro_curr 12 5865.6 5930.9 100.58                         
fit_strict2_neuro_curr 15 5860.4 5912.7 101.46    0.87338     0       3
                       Pr(>Chisq)
fit_strong2_neuro_curr           
fit_strict2_neuro_curr     0.8318

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.3.8 Neuroticism: ideal-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + neuro_ideal_par2_t2 + neuro_ideal_par3_t2
neuro_ideal2 =~ NA*neuro_ideal_par1_t3 + lambda1*neuro_ideal_par1_t3 + neuro_ideal_par2_t3 + neuro_ideal_par3_t3

# Intercepts
neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ 1
neuro_ideal_par3_t2 ~ 1

neuro_ideal_par1_t3 ~ i1*1
neuro_ideal_par2_t3 ~ 1
neuro_ideal_par3_t3 ~ 1

# Unique Variances
neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

neuro_ideal_par1_t3 ~~ neuro_ideal_par1_t3
neuro_ideal_par2_t3 ~~ neuro_ideal_par2_t3
neuro_ideal_par3_t3 ~~ neuro_ideal_par3_t3

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_configural2_neuro_ideal <- cfa(configural2_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_neuro_ideal, fit.measures = TRUE)

# Weak invariance model
weak2_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2
neuro_ideal2 =~ NA*neuro_ideal_par1_t3 + lambda1*neuro_ideal_par1_t3 + lambda2*neuro_ideal_par2_t3 + lambda3*neuro_ideal_par3_t3

# Intercepts
neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ 1
neuro_ideal_par3_t2 ~ 1

neuro_ideal_par1_t3 ~ i1*1
neuro_ideal_par2_t3 ~ 1
neuro_ideal_par3_t3 ~ 1

# Unique Variances
neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

neuro_ideal_par1_t3 ~~ neuro_ideal_par1_t3
neuro_ideal_par2_t3 ~~ neuro_ideal_par2_t3
neuro_ideal_par3_t3 ~~ neuro_ideal_par3_t3

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_weak2_neuro_ideal <- cfa(weak2_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_neuro_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2
neuro_ideal2 =~ NA*neuro_ideal_par1_t3 + lambda1*neuro_ideal_par1_t3 + lambda2*neuro_ideal_par2_t3 + lambda3*neuro_ideal_par3_t3

# Intercepts
neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ i2*1
neuro_ideal_par3_t2 ~ i3*1

neuro_ideal_par1_t3 ~ i1*1
neuro_ideal_par2_t3 ~ i2*1
neuro_ideal_par3_t3 ~ i3*1

# Unique Variances
neuro_ideal_par1_t2 ~~ neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ neuro_ideal_par3_t2

neuro_ideal_par1_t3 ~~ neuro_ideal_par1_t3
neuro_ideal_par2_t3 ~~ neuro_ideal_par2_t3
neuro_ideal_par3_t3 ~~ neuro_ideal_par3_t3

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strong2_neuro_ideal <- cfa(strong2_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_neuro_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_neuro_ideal <- '
# Define the latent factors
neuro_ideal1 =~ NA*neuro_ideal_par1_t2 + lambda1*neuro_ideal_par1_t2 + lambda2*neuro_ideal_par2_t2 + lambda3*neuro_ideal_par3_t2
neuro_ideal2 =~ NA*neuro_ideal_par1_t3 + lambda1*neuro_ideal_par1_t3 + lambda2*neuro_ideal_par2_t3 + lambda3*neuro_ideal_par3_t3

# Intercepts
neuro_ideal_par1_t2 ~ i1*1
neuro_ideal_par2_t2 ~ i2*1
neuro_ideal_par3_t2 ~ i3*1

neuro_ideal_par1_t3 ~ i1*1
neuro_ideal_par2_t3 ~ i2*1
neuro_ideal_par3_t3 ~ i3*1

# Unique Variances
neuro_ideal_par1_t2 ~~ u1*neuro_ideal_par1_t2
neuro_ideal_par2_t2 ~~ u2*neuro_ideal_par2_t2
neuro_ideal_par3_t2 ~~ u3*neuro_ideal_par3_t2

neuro_ideal_par1_t3 ~~ u1*neuro_ideal_par1_t3
neuro_ideal_par2_t3 ~~ u2*neuro_ideal_par2_t3
neuro_ideal_par3_t3 ~~ u3*neuro_ideal_par3_t3

# Latent Variable Means
neuro_ideal1 ~ 0*1
neuro_ideal2 ~ 1

# Latent Variable Variances and Covariance
neuro_ideal1 ~~ 1*neuro_ideal1
neuro_ideal2 ~~ neuro_ideal2
neuro_ideal1 ~~ neuro_ideal2
'
fit_strict2_neuro_ideal <- cfa(strict2_neuro_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_neuro_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_neuro_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli  rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>
1 configural   577    19  37.4 4514. 4596. 0.978 0.958 0.0798 0.0219
2 weak         577    17  40.1 4512. 4586. 0.977 0.966 0.0722 0.0309
3 strong       577    15  43.1 4511. 4577. 0.976 0.971 0.0670 0.0364
4 strict       577    12  48.3 4510. 4563. 0.975 0.975 0.0620 0.0280
# chi-square difference test for nested models 
anova(fit_configural2_neuro_ideal, fit_weak2_neuro_ideal)

Chi-Squared Difference Test

                            Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_configural2_neuro_ideal  8 4513.5 4596.3 37.415                            
fit_weak2_neuro_ideal       10 4512.2 4586.3 40.113     2.6987 0.024606       2
                            Pr(>Chisq)
fit_configural2_neuro_ideal           
fit_weak2_neuro_ideal           0.2594
anova(fit_weak2_neuro_ideal, fit_strong2_neuro_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff   RMSEA Df diff
fit_weak2_neuro_ideal   10 4512.2 4586.3 40.113                           
fit_strong2_neuro_ideal 12 4511.3 4576.6 43.122     3.0084 0.02956       2
                        Pr(>Chisq)
fit_weak2_neuro_ideal             
fit_strong2_neuro_ideal     0.2222
anova(fit_strong2_neuro_ideal, fit_strict2_neuro_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_strong2_neuro_ideal 12 4511.3 4576.6 43.122                            
fit_strict2_neuro_ideal 15 4510.4 4562.7 48.255     5.1328 0.035101       3
                        Pr(>Chisq)
fit_strong2_neuro_ideal           
fit_strict2_neuro_ideal     0.1623

Good model fit across all stages of measurement invariance. Chi^2 tests indicate that strict measurement invariance is given.

4.3.9 Openness: current-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + openn_curr_par2_t2 + openn_curr_par3_t2
openn_curr2 =~ NA*openn_curr_par1_t3 + lambda1*openn_curr_par1_t3 + openn_curr_par2_t3 + openn_curr_par3_t3

# Intercepts
openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ 1
openn_curr_par3_t2 ~ 1

openn_curr_par1_t3 ~ i1*1
openn_curr_par2_t3 ~ 1
openn_curr_par3_t3 ~ 1

# Unique Variances
openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

openn_curr_par1_t3 ~~ openn_curr_par1_t3
openn_curr_par2_t3 ~~ openn_curr_par2_t3
openn_curr_par3_t3 ~~ openn_curr_par3_t3

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_configural2_openn_curr <- cfa(configural2_openn_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_openn_curr, fit.measures = TRUE)

# Weak invariance model
weak2_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2
openn_curr2 =~ NA*openn_curr_par1_t3 + lambda1*openn_curr_par1_t3 + lambda2*openn_curr_par2_t3 + lambda3*openn_curr_par3_t3

# Intercepts
openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ 1
openn_curr_par3_t2 ~ 1

openn_curr_par1_t3 ~ i1*1
openn_curr_par2_t3 ~ 1
openn_curr_par3_t3 ~ 1

# Unique Variances
openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

openn_curr_par1_t3 ~~ openn_curr_par1_t3
openn_curr_par2_t3 ~~ openn_curr_par2_t3
openn_curr_par3_t3 ~~ openn_curr_par3_t3

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_weak2_openn_curr <- cfa(weak2_openn_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_openn_curr, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2
openn_curr2 =~ NA*openn_curr_par1_t3 + lambda1*openn_curr_par1_t3 + lambda2*openn_curr_par2_t3 + lambda3*openn_curr_par3_t3

# Intercepts
openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ i2*1
openn_curr_par3_t2 ~ i3*1

openn_curr_par1_t3 ~ i1*1
openn_curr_par2_t3 ~ i2*1
openn_curr_par3_t3 ~ i3*1

# Unique Variances
openn_curr_par1_t2 ~~ openn_curr_par1_t2
openn_curr_par2_t2 ~~ openn_curr_par2_t2
openn_curr_par3_t2 ~~ openn_curr_par3_t2

openn_curr_par1_t3 ~~ openn_curr_par1_t3
openn_curr_par2_t3 ~~ openn_curr_par2_t3
openn_curr_par3_t3 ~~ openn_curr_par3_t3

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strong2_openn_curr <- cfa(strong2_openn_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_openn_curr, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_openn_curr <- '
# Define the latent factors
openn_curr1 =~ NA*openn_curr_par1_t2 + lambda1*openn_curr_par1_t2 + lambda2*openn_curr_par2_t2 + lambda3*openn_curr_par3_t2
openn_curr2 =~ NA*openn_curr_par1_t3 + lambda1*openn_curr_par1_t3 + lambda2*openn_curr_par2_t3 + lambda3*openn_curr_par3_t3

# Intercepts
openn_curr_par1_t2 ~ i1*1
openn_curr_par2_t2 ~ i2*1
openn_curr_par3_t2 ~ i3*1

openn_curr_par1_t3 ~ i1*1
openn_curr_par2_t3 ~ i2*1
openn_curr_par3_t3 ~ i3*1

# Unique Variances
openn_curr_par1_t2 ~~ u1*openn_curr_par1_t2
openn_curr_par2_t2 ~~ u2*openn_curr_par2_t2
openn_curr_par3_t2 ~~ u3*openn_curr_par3_t2

openn_curr_par1_t3 ~~ u1*openn_curr_par1_t3
openn_curr_par2_t3 ~~ u2*openn_curr_par2_t3
openn_curr_par3_t3 ~~ u3*openn_curr_par3_t3

# Latent Variable Means
openn_curr1 ~ 0*1
openn_curr2 ~ 1

# Latent Variable Variances and Covariance
openn_curr1 ~~ 1*openn_curr1
openn_curr2 ~~ openn_curr2
openn_curr1 ~~ openn_curr2
'
fit_strict2_openn_curr <- cfa(strict2_openn_curr, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_openn_curr, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_openn_curr) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   577    19  208. 5257. 5340. 0.911 0.834 0.208 0.0423
2 weak         577    17  209. 5254. 5328. 0.912 0.868 0.186 0.0439
3 strong       577    15  209. 5250. 5315. 0.913 0.891 0.169 0.0437
4 strict       577    12  212. 5247. 5299. 0.913 0.913 0.151 0.0447
# chi-square difference test for nested models 
anova(fit_configural2_openn_curr, fit_weak2_openn_curr)

Chi-Squared Difference Test

                           Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_openn_curr  8 5257.1 5339.9 207.96                         
fit_weak2_openn_curr       10 5253.9 5328.0 208.72    0.76522     0       2
                           Pr(>Chisq)
fit_configural2_openn_curr           
fit_weak2_openn_curr           0.6821
anova(fit_weak2_openn_curr, fit_strong2_openn_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_weak2_openn_curr   10 5253.9 5328.0 208.72                         
fit_strong2_openn_curr 12 5249.9 5315.3 208.75   0.028496     0       2
                       Pr(>Chisq)
fit_weak2_openn_curr             
fit_strong2_openn_curr     0.9859
anova(fit_strong2_openn_curr, fit_strict2_openn_curr)

Chi-Squared Difference Test

                       Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_openn_curr 12 5249.9 5315.3 208.75                         
fit_strict2_openn_curr 15 5246.9 5299.2 211.71     2.9624     0       3
                       Pr(>Chisq)
fit_strong2_openn_curr           
fit_strict2_openn_curr     0.3975

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.

4.3.10 Openness: ideal-self (from T2 to T3)

Fit model:

Show the code
# Code snippets adapted from https://quantdev.ssri.psu.edu/sites/qdev/files/LongitudinalMeasurementInvariance_2017_1108.html

# Configural invariance model
configural2_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + openn_ideal_par2_t2 + openn_ideal_par3_t2
openn_ideal2 =~ NA*openn_ideal_par1_t3 + lambda1*openn_ideal_par1_t3 + openn_ideal_par2_t3 + openn_ideal_par3_t3

# Intercepts
openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ 1
openn_ideal_par3_t2 ~ 1

openn_ideal_par1_t3 ~ i1*1
openn_ideal_par2_t3 ~ 1
openn_ideal_par3_t3 ~ 1

# Unique Variances
openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

openn_ideal_par1_t3 ~~ openn_ideal_par1_t3
openn_ideal_par2_t3 ~~ openn_ideal_par2_t3
openn_ideal_par3_t3 ~~ openn_ideal_par3_t3

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_configural2_openn_ideal <- cfa(configural2_openn_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_configural2_openn_ideal, fit.measures = TRUE)

# Weak invariance model
weak2_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2
openn_ideal2 =~ NA*openn_ideal_par1_t3 + lambda1*openn_ideal_par1_t3 + lambda2*openn_ideal_par2_t3 + lambda3*openn_ideal_par3_t3

# Intercepts
openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ 1
openn_ideal_par3_t2 ~ 1

openn_ideal_par1_t3 ~ i1*1
openn_ideal_par2_t3 ~ 1
openn_ideal_par3_t3 ~ 1

# Unique Variances
openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

openn_ideal_par1_t3 ~~ openn_ideal_par1_t3
openn_ideal_par2_t3 ~~ openn_ideal_par2_t3
openn_ideal_par3_t3 ~~ openn_ideal_par3_t3

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_weak2_openn_ideal <- cfa(weak2_openn_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_weak2_openn_ideal, fit.measures = TRUE)

# Strong invariance model (additional constraints on manifest intercepts)
strong2_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2
openn_ideal2 =~ NA*openn_ideal_par1_t3 + lambda1*openn_ideal_par1_t3 + lambda2*openn_ideal_par2_t3 + lambda3*openn_ideal_par3_t3

# Intercepts
openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ i2*1
openn_ideal_par3_t2 ~ i3*1

openn_ideal_par1_t3 ~ i1*1
openn_ideal_par2_t3 ~ i2*1
openn_ideal_par3_t3 ~ i3*1

# Unique Variances
openn_ideal_par1_t2 ~~ openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ openn_ideal_par3_t2

openn_ideal_par1_t3 ~~ openn_ideal_par1_t3
openn_ideal_par2_t3 ~~ openn_ideal_par2_t3
openn_ideal_par3_t3 ~~ openn_ideal_par3_t3

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strong2_openn_ideal <- cfa(strong2_openn_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strong2_openn_ideal, fit.measures = TRUE)

# Strict invariance model (additional constraints on manifest variances)
strict2_openn_ideal <- '
# Define the latent factors
openn_ideal1 =~ NA*openn_ideal_par1_t2 + lambda1*openn_ideal_par1_t2 + lambda2*openn_ideal_par2_t2 + lambda3*openn_ideal_par3_t2
openn_ideal2 =~ NA*openn_ideal_par1_t3 + lambda1*openn_ideal_par1_t3 + lambda2*openn_ideal_par2_t3 + lambda3*openn_ideal_par3_t3

# Intercepts
openn_ideal_par1_t2 ~ i1*1
openn_ideal_par2_t2 ~ i2*1
openn_ideal_par3_t2 ~ i3*1

openn_ideal_par1_t3 ~ i1*1
openn_ideal_par2_t3 ~ i2*1
openn_ideal_par3_t3 ~ i3*1

# Unique Variances
openn_ideal_par1_t2 ~~ u1*openn_ideal_par1_t2
openn_ideal_par2_t2 ~~ u2*openn_ideal_par2_t2
openn_ideal_par3_t2 ~~ u3*openn_ideal_par3_t2

openn_ideal_par1_t3 ~~ u1*openn_ideal_par1_t3
openn_ideal_par2_t3 ~~ u2*openn_ideal_par2_t3
openn_ideal_par3_t3 ~~ u3*openn_ideal_par3_t3

# Latent Variable Means
openn_ideal1 ~ 0*1
openn_ideal2 ~ 1

# Latent Variable Variances and Covariance
openn_ideal1 ~~ 1*openn_ideal1
openn_ideal2 ~~ openn_ideal2
openn_ideal1 ~~ openn_ideal2
'
fit_strict2_openn_ideal <- cfa(strict2_openn_ideal, data = df_sbsa2_wide_pers %>% filter(valid_t2==1 & rando!="Waitlist-Control"), mimic = "mplus", missing="ML")
summary(fit_strict2_openn_ideal, fit.measures = TRUE)

Results summary:

# compare model fit
bind_rows(broom::glance(fit_configural2_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_weak2_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strong2_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr),
          broom::glance(fit_strict2_openn_ideal) %>% 
            select(nobs, npar, chisq, AIC, BIC, cfi, tli, rmsea, srmr)) %>% 
  mutate(model = c("configural", "weak", "strong", "strict")) %>% 
  select(model, everything())
# A tibble: 4 × 10
  model       nobs  npar chisq   AIC   BIC   cfi   tli rmsea   srmr
  <chr>      <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
1 configural   576    19  116. 5248. 5331. 0.905 0.822 0.153 0.0658
2 weak         576    17  117. 5245. 5319. 0.906 0.859 0.136 0.0712
3 strong       576    15  121. 5246. 5311. 0.904 0.880 0.126 0.0739
4 strict       576    12  123. 5241. 5294. 0.905 0.905 0.112 0.0683
# chi-square difference test for nested models 
anova(fit_configural2_openn_ideal, fit_weak2_openn_ideal)

Chi-Squared Difference Test

                            Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_configural2_openn_ideal  8 5248.2 5330.9 115.88                         
fit_weak2_openn_ideal       10 5245.4 5319.4 117.09     1.2118     0       2
                            Pr(>Chisq)
fit_configural2_openn_ideal           
fit_weak2_openn_ideal           0.5456
anova(fit_weak2_openn_ideal, fit_strong2_openn_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff    RMSEA Df diff
fit_weak2_openn_ideal   10 5245.4 5319.4 117.09                            
fit_strong2_openn_ideal 12 5245.7 5311.0 121.41     4.3138 0.044817       2
                        Pr(>Chisq)
fit_weak2_openn_ideal             
fit_strong2_openn_ideal     0.1157
anova(fit_strong2_openn_ideal, fit_strict2_openn_ideal)

Chi-Squared Difference Test

                        Df    AIC    BIC  Chisq Chisq diff RMSEA Df diff
fit_strong2_openn_ideal 12 5245.7 5311.0 121.41                         
fit_strict2_openn_ideal 15 5241.5 5293.8 123.19     1.7786     0       3
                        Pr(>Chisq)
fit_strong2_openn_ideal           
fit_strict2_openn_ideal     0.6196

Good model fit across all stages of measurement invariance (except for RMSEA). Chi^2 tests indicate that strict measurement invariance is given.


5 Descriptives

5.1 Sample size

How many participants at each time point and in each condition?

df_sbsa2 %>% group_by(time, rando) %>% tally()
# A tibble: 9 × 3
# Groups:   time [3]
   time rando                n
  <dbl> <chr>            <int>
1     1 Self-Acceptance    336
2     1 Self-Improvement   338
3     1 Waitlist-Control   174
4     2 Self-Acceptance    284
5     2 Self-Improvement   293
6     2 Waitlist-Control   147
7     3 Self-Acceptance    252
8     3 Self-Improvement   262
9     3 Waitlist-Control   125

5.2 Demographics

Gender and age distribution

df_sbsa2 %>% group_by(time, rando) %>% 
  summarise(n = n(), m_age = mean(age, na.rm=T), sd_age = sd(age, na.rm=T), min_age = min(age, na.rm=T), max_age = max(age, na.rm=T))
# A tibble: 9 × 7
# Groups:   time [3]
   time rando                n m_age sd_age min_age max_age
  <dbl> <chr>            <int> <dbl>  <dbl>   <dbl>   <dbl>
1     1 Self-Acceptance    336  30.5   8.87      20      65
2     1 Self-Improvement   338  30.3   9.38      18      69
3     1 Waitlist-Control   174  31.2  11.2       19      75
4     2 Self-Acceptance    284  30.8   8.98      20      65
5     2 Self-Improvement   293  30.3   9.30      20      69
6     2 Waitlist-Control   147  31.9  11.8       19      75
7     3 Self-Acceptance    252  31.1   8.96      20      65
8     3 Self-Improvement   262  30.7   9.41      20      69
9     3 Waitlist-Control   125  32.4  12.3       19      75
df_sbsa2 %>% group_by(time, rando, gender) %>% 
  summarise(n = n(), m_age = mean(age, na.rm=T), sd_age = sd(age, na.rm=T), min_age = min(age, na.rm=T), max_age = max(age, na.rm=T))
# A tibble: 18 × 8
# Groups:   time, rando [9]
    time rando            gender     n m_age sd_age min_age max_age
   <dbl> <chr>            <chr>  <int> <dbl>  <dbl>   <dbl>   <dbl>
 1     1 Self-Acceptance  Female   169  31     9.82      20      65
 2     1 Self-Acceptance  Male     167  30.0   7.79      20      58
 3     1 Self-Improvement Female   166  31.0   9.15      20      65
 4     1 Self-Improvement Male     172  29.8   9.58      18      69
 5     1 Waitlist-Control Female    85  31.9  11.4       21      69
 6     1 Waitlist-Control Male      89  30.6  11.0       19      75
 7     2 Self-Acceptance  Female   142  30.9   9.83      20      65
 8     2 Self-Acceptance  Male     142  30.8   8.07      20      58
 9     2 Self-Improvement Female   143  30.8   8.82      20      59
10     2 Self-Improvement Male     150  29.9   9.75      20      69
11     2 Waitlist-Control Female    75  33.0  12.4       21      69
12     2 Waitlist-Control Male      72  30.7  11.1       19      75
13     3 Self-Acceptance  Female   127  30.8   9.64      20      65
14     3 Self-Acceptance  Male     125  31.5   8.23      20      58
15     3 Self-Improvement Female   126  31     8.65      20      56
16     3 Self-Improvement Male     136  30.4  10.1       20      69
17     3 Waitlist-Control Female    65  33.6  12.9       21      69
18     3 Waitlist-Control Male      60  31.0  11.6       19      75

5.3 General change/acceptance goals

Summary stats:

table(df_sbsa2$sb06_01) # How much do you want to change your personality in general?

  1   2   3   4   5 
 34  81 179  89  27 
summary(df_sbsa2$sb06_01)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   2.000   3.000   2.985   4.000   5.000    1801 
table(df_sbsa2$sa06_01) # How much do you want to be better at accepting yourself for who you are?

  1   2   3   4   5 
  9  12  65 121 203 
summary(df_sbsa2$sa06_01)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   4.000   4.000   4.212   5.000   5.000    1801 

Plot:

cowplot::plot_grid(
  ggplot(df_sbsa2 %>% filter(!is.na(sb06_01)), aes(x=sb06_01)) + geom_histogram(bins=5) + 
  labs(x="General change goal", y="Frequency") + theme_bw(),
  ggplot(df_sbsa2 %>% filter(!is.na(sa06_01)), aes(x=sa06_01)) + geom_histogram(bins=5) + 
  labs(x="General acceptance goal", y="Frequency") + theme_bw(), 
  ncol = 2
)

5.4 Facet-specific change/acceptance goals

Self-Improvement

Pre:
Here is a list of 15 personality traits. You might be high or low on any of these traits. Regardless of how high or low you are on these traits, we want to know how much you [want to] change. Please rate how much you would like to change your level of each of these traits, where 1 = I do not want to change and 5 = I want to change a lot.

Post:
Here is a list of 15 personality traits. During the study, you may have tried to change in some of these traits. We want to know how you think you changed in each trait. Please rate how much you changed your level of each of these traits during this study, where 1 = I am completely the same and 5 = I have changed a lot.

Self Acceptance

Pre:
Here is a list of 15 personality traits. You might be high or low on any of these traits. Regardless of how high or low you are on these traits, we want to know how much you accept yourself. Please rate how much you accept your level of each of these traits, where 1 = I completely accept myself and 5 = I want to accept myself more.

Post:
Here is a list of 15 personality traits. During the study, you may have tried to accept your level on some of these traits more. We want to know how much you think you accept yourself more because of this study. Please rate how much you accept your level of each of these traits more during this study, where 1 = I accept myself the same and 5 = I accept this about myself much more.

Plot distributions

Show the code
cowplot::plot_grid(
  ggdraw() + draw_label(names(b5_vars)[5 + 01], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_01)), aes(x=sb07_01)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_01)), aes(x=sb12_01)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_01)), aes(x=sa07_01)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_01)), aes(x=sa14_01)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 02], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_02)), aes(x=sb07_02)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_02)), aes(x=sb12_02)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_02)), aes(x=sa07_02)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_02)), aes(x=sa14_02)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 03], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_03)), aes(x=sb07_03)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_03)), aes(x=sb12_03)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_03)), aes(x=sa07_03)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_03)), aes(x=sa14_03)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ncol = 1,
  rel_heights = c(0.1, 1, 0.1, 1, 0.1, 1)
)

Show the code
cowplot::plot_grid(
  ggdraw() + draw_label(names(b5_vars)[5 + 04], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_04)), aes(x=sb07_04)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_04)), aes(x=sb12_04)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_04)), aes(x=sa07_04)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_04)), aes(x=sa14_04)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 05], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_05)), aes(x=sb07_05)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175, 200), limits = c(0,220)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_05)), aes(x=sb12_05)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175, 200), limits = c(0,220)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_05)), aes(x=sa07_05)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175, 200), limits = c(0,220)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_05)), aes(x=sa14_05)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175, 200), limits = c(0,220)),
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 06], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_06)), aes(x=sb07_06)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_06)), aes(x=sb12_06)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_06)), aes(x=sa07_06)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_06)), aes(x=sa14_06)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ncol = 1,
  rel_heights = c(0.1, 1, 0.1, 1, 0.1, 1)
)

Show the code
cowplot::plot_grid(
  ggdraw() + draw_label(names(b5_vars)[5 + 07], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_07)), aes(x=sb07_07)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_07)), aes(x=sb12_07)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_07)), aes(x=sa07_07)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_07)), aes(x=sa14_07)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 08], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_08)), aes(x=sb07_08)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_08)), aes(x=sb12_08)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_08)), aes(x=sa07_08)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_08)), aes(x=sa14_08)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 09], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_09)), aes(x=sb07_09)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_09)), aes(x=sb12_09)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_09)), aes(x=sa07_09)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_09)), aes(x=sa14_09)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ncol = 1,
  rel_heights = c(0.1, 1, 0.1, 1, 0.1, 1)
)

Show the code
cowplot::plot_grid(
  ggdraw() + draw_label(names(b5_vars)[5 + 10], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_10)), aes(x=sb07_10)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175), limits = c(0,200)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_10)), aes(x=sb12_10)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175), limits = c(0,200)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_10)), aes(x=sa07_10)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175), limits = c(0,200)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_10)), aes(x=sa14_10)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150, 175), limits = c(0,200)), 
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 11], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_11)), aes(x=sb07_11)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_11)), aes(x=sb12_11)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_11)), aes(x=sa07_11)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_11)), aes(x=sa14_11)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 12], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_12)), aes(x=sb07_12)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_12)), aes(x=sb12_12)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_12)), aes(x=sa07_12)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_12)), aes(x=sa14_12)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ncol = 1,
  rel_heights = c(0.1, 1, 0.1, 1, 0.1, 1)
)

Show the code
cowplot::plot_grid(
  ggdraw() + draw_label(names(b5_vars)[5 + 13], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_13)), aes(x=sb07_13)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_13)), aes(x=sb12_13)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_13)), aes(x=sa07_13)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_13)), aes(x=sa14_13)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 14], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_14)), aes(x=sb07_14)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_14)), aes(x=sb12_14)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_14)), aes(x=sa07_14)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_14)), aes(x=sa14_14)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ggdraw() + draw_label(names(b5_vars)[5 + 15], fontface = 'plain', x = 0, hjust = 0) + theme(plot.margin = margin(0, 0, 0, 7)),
  cowplot::plot_grid(
    ggplot(df_sbsa2 %>% filter(!is.na(sb07_15)), aes(x=sb07_15)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Pre", y="Frequency") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sb12_15)), aes(x=sb12_15)) + geom_histogram(bins=5) + 
    labs(x="Change goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)), 
    ggplot(df_sbsa2 %>% filter(!is.na(sa07_15)), aes(x=sa07_15)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Pre", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
    ggplot(df_sbsa2 %>% filter(!is.na(sa14_15)), aes(x=sa14_15)) + geom_histogram(bins=5) + 
    labs(x="Acceptance goal: Post", y="") + theme_bw() + scale_y_continuous(breaks = c(25, 50, 75, 100, 125, 150), limits = c(0,170)),
  ncol = 4), 
  ncol = 1,
  rel_heights = c(0.1, 1, 0.1, 1, 0.1, 1)
)


6 Confirmatory results

6.1 H1: Well-being - similarity correlations (H4 in paper)

All four psychological well-being indicators will be positively correlated with a greater similarity between current- and ideal self-ratings of personality.

To examine this at the level of overall profiles, we will compute the correlations between the psychological well-being indicators and the Fisher z transformed correlations between the facet- and item-level real-ideal self-profiles. To examine this at the level of individual traits, we will compute the correlation between psychological well-being indicators and the squared difference between current- and ideal-self rating for each Big Five trait and facet.

6.1.1 Profile similarity

Computations:

Show the code
cormat_profile <- cor(df_sbsa2[, c("swls", "meaning", "selfes", "concept",
                                  "profile_corr_item_z", "profile_corr_facet_z")], use = "pairwise.complete.obs")

rownames(cormat_profile) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                              "Item-Level Profile Corr (z)", "Facet-Level Profile Corr (z)")
colnames(cormat_profile) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                              "Item-Level Profile Corr (z)", "Facet-Level Profile Corr (z)")
corrplot(cormat_profile, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
                      addCoef.col ='black', number.cex = 0.7, diag = FALSE) # also add numbers

Positive correlations of well-being indicators with profile similarity between current self and ideal self personality. Especially high correlation with self-esteem. High congruence of item-level and facet-level profile similarity.

6.1.2 Individual traits: squared differences

Computations:

Show the code
cormat_sqtraits <- cor(df_sbsa2[, c("swls", "meaning", "selfes", "concept",
                                   paste0(str_trunc(names(b5_vars)[1:5], 5, ellipsis = ""), "_sqdiff"))], 
                       use = "pairwise.complete.obs")

rownames(cormat_sqtraits) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[1:5]))
colnames(cormat_sqtraits) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[1:5]))

cormat_sqfacets <- cor(df_sbsa2[, c("swls", "meaning", "selfes", "concept",
                                   paste0(str_trunc(names(b5_vars)[6:20], 5, ellipsis = ""), "_sqdiff"))], 
                       use = "pairwise.complete.obs")

rownames(cormat_sqfacets) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[6:20]))
colnames(cormat_sqfacets) <- c("Life Satisfaction", "Meaning in Life", "Self-Esteem" , "Self Concept Clarity", 
                               str_to_title(names(b5_vars)[6:20]))

Big Five traits

corrplot(cormat_sqtraits, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
         addCoef.col ='black', number.cex = 0.7, diag = FALSE) # also add numbers

Big Five facets

corrplot(cormat_sqfacets, type = "lower", order = "original", tl.col = "black", tl.srt = 10,
         addCoef.col ='black', number.cex = 0.6, diag = FALSE) # also add numbers

Here we see negative correlations of well-being indicators with squared trait- and facet-level mean-score differences between current self and ideal self personality. Especially pronounced negative correlations for neuroticism, extraversion, and conscientiousness (in that order). On the facet-level, we see that depression is the facet with the highest correlation of its squared difference with well-being, followed by energy. Within conscientiousness, productiveness has the strongest correlation.


6.2 H2: Well-being - latent change (H5 in paper)

Both intervention groups (but not the control group between T1 and T2) will increase in all four psychological well-being indicators.

We will test the mean-level difference between baseline and follow up using latent change models. Our main focus will be changes from T1 to T2 and we will check in a second set of models whether any changes persist from T2 to T3.

6.2.1 Intervention effects (changes from T1 to T2)

6.2.1.1 Life satisfaction

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_swls_hyp2 <- '
swls_t1 =~ 1*sw06_01_t1 + lamb2*sw06_02_t1 + lamb3*sw06_03_t1 + lamb4*sw06_04_t1 # This specifies the measurement model for swls_t1 
swls_t2 =~ 1*sw06_01_t2 + lamb2*sw06_02_t2 + lamb3*sw06_03_t2 + lamb4*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadings

swls_t2 ~ 1*swls_t1     # This parameter regresses swls_t2 perfectly on swls_t1
d_swls_1 =~ 1*swls_t2   # This defines the latent change score factor as measured perfectly by scores on swls_t2
swls_t2 ~ 0*1           # This line constrains the intercept of swls_t2 to 0
swls_t2 ~~ 0*swls_t2    # This fixes the variance of swls_t2 to 0

d_swls_1 ~ 1           # This estimates the intercept of the change score 
swls_t1 ~ 1            # This estimates the intercept of swls_t1 
d_swls_1 ~~ d_swls_1   # This estimates the variance of the change scores 
swls_t1 ~~ swls_t1     # This estimates the variance of the swls_t1 
d_swls_1 ~ swls_t1     # This estimates the self-feedback parameter

sw06_01_t1 ~~ sw06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t1 ~~ sw06_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t1 ~~ sw06_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t1 ~~ sw06_04_t2   # This allows residual covariance on indicator X4 across T1 and T2

sw06_01_t1 ~~ res1*sw06_01_t1   # This allows residual variance on indicator X1 at T1 
sw06_02_t1 ~~ res2*sw06_02_t1   # This allows residual variance on indicator X2 at T1
sw06_03_t1 ~~ res3*sw06_03_t1   # This allows residual variance on indicator X3 at T1
sw06_04_t1 ~~ res4*sw06_04_t1   # This allows residual variance on indicator X4 at T1

sw06_01_t2 ~~ res1*sw06_01_t2  # This allows residual variance on indicator X1 at T2 
sw06_02_t2 ~~ res2*sw06_02_t2  # This allows residual variance on indicator X2 at T2 
sw06_03_t2 ~~ res3*sw06_03_t2  # This allows residual variance on indicator X3 at T2
sw06_04_t2 ~~ res4*sw06_04_t2  # This allows residual variance on indicator X4 at T2

sw06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
sw06_03_t1 ~ m3*1     # This estimates the intercept of X3 at T1
sw06_04_t1 ~ m4*1     # This estimates the intercept of X4 at T1

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
sw06_03_t2 ~ m3*1     # This estimates the intercept of X3 at T2
sw06_04_t2 ~ m4*1     # This estimates the intercept of X4 at T2
'
fit_mi_lcs_swls_hyp2 <- lavaan(mi_lcs_swls_hyp2, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_swls_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_swls_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
673 19 13061.93 13147.66 0.977 0.065 0.03
# parameters of interest
params_lcs_swls_hyp2 <- broom::tidy(fit_mi_lcs_swls_hyp2, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("swls_t2 ~ swls_t1", "d_swls_1 =~ swls_t2", "d_swls_1 ~ swls_t1", # change parameters
                           "d_swls_1 ~1 ", "swls_t1 ~1 ", "", # means
                           "d_swls_1 ~~ d_swls_1")) # variances
kable(params_lcs_swls_hyp2, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
swls_t2 ~ swls_t1 1.000 1.000 1.000 0.984 NA NA
d_swls_1 =~ swls_t2 1.000 1.000 1.000 0.653 NA NA
d_swls_1 ~1 0.818 0.618 1.018 1.246 8.014 0
swls_t1 ~1 2.685 2.598 2.772 2.716 60.416 0
d_swls_1 ~~ d_swls_1 0.390 0.307 0.473 0.906 9.220 0
d_swls_1 ~ swls_t1 -0.204 -0.270 -0.137 -0.307 -5.982 0

Plot model:

semPaths(fit_mi_lcs_swls_hyp2, what="est", 
         sizeLat = 7, sizeMan = 7, edge.label.cex = .75, intercepts = T, edge.color="black")

Significantly higher life satisfaction at the post test, b = 0.818, p = 0. Those with initially higher levels of life satisfaction (at T1) change to a lesser degree.

What happens in the waitlist control group during this time?

Fit model:

Show the code
fit_mi_lcs_swls_hyp2_cg <- lavaan(mi_lcs_swls_hyp2, data=df_sbsa2_wide_wb %>% filter(rando=="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_swls_hyp2_cg, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_swls_hyp2_cg) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
175 19 3244.162 3304.293 0.978 0.071 0.037
# parameters of interest
params_lcs_swls_hyp2_cg <- broom::tidy(fit_mi_lcs_swls_hyp2_cg, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("swls_t2 ~ swls_t1", "d_swls_1 =~ swls_t2", "d_swls_1 ~ swls_t1", # change parameters
                           "d_swls_1 ~1 ", "swls_t1 ~1 ", "", # means
                           "d_swls_1 ~~ d_swls_1")) # variances
kable(params_lcs_swls_hyp2_cg, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
swls_t2 ~ swls_t1 1.000 1.000 1.000 0.979 NA NA
d_swls_1 =~ swls_t2 1.000 1.000 1.000 0.481 NA NA
d_swls_1 ~1 0.510 0.172 0.848 0.951 2.955 0.003
swls_t1 ~1 2.634 2.455 2.812 2.412 28.873 0.000
d_swls_1 ~~ d_swls_1 0.276 0.132 0.420 0.960 3.751 0.000
d_swls_1 ~ swls_t1 -0.098 -0.206 0.009 -0.200 -1.789 0.074

Life satisfaction changes in the control group not significant at preregistered alpha-level (.001), b = 0.51, p = 0.003. Still a positive effect, but weaker effect size than in intervention group.

6.2.1.2 Meaning in life

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_meaning_hyp2 <- '
meaning_t1 =~ 1*meaning_par1_t1 + lamb2*meaning_par2_t1 + lamb3*meaning_par3_t1 # This specifies the measurement model for meaning_t1 
meaning_t2 =~ 1*meaning_par1_t2 + lamb2*meaning_par2_t2 + lamb3*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadings

meaning_t2 ~ 1*meaning_t1     # This parameter regresses meaning_t2 perfectly on meaning_t1
d_meaning_1 =~ 1*meaning_t2   # This defines the latent change score factor as measured perfectly by scores on meaning_t2
meaning_t2 ~ 0*1              # This line constrains the intercept of meaning_t2 to 0
meaning_t2 ~~ 0*meaning_t2    # This fixes the variance of meaning_t2 to 0

d_meaning_1 ~ 1              # This estimates the intercept of the change score 
meaning_t1 ~ 1               # This estimates the intercept of meaning_t1 
d_meaning_1 ~~ d_meaning_1   # This estimates the variance of the change scores 
meaning_t1 ~~ meaning_t1     # This estimates the variance of the meaning_t1 
d_meaning_1 ~ meaning_t1     # This estimates the self-feedback parameter

meaning_par1_t1 ~~ meaning_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
meaning_par2_t1 ~~ meaning_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
meaning_par3_t1 ~~ meaning_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

meaning_par1_t1 ~~ res1*meaning_par1_t1   # This allows residual variance on indicator X1 at T1 
meaning_par2_t1 ~~ res2*meaning_par2_t1   # This allows residual variance on indicator X2 at T1
meaning_par3_t1 ~~ res3*meaning_par3_t1   # This allows residual variance on indicator X3 at T1

meaning_par1_t2 ~~ res1*meaning_par1_t2  # This allows residual variance on indicator X1 at T2 
meaning_par2_t2 ~~ res2*meaning_par2_t2  # This allows residual variance on indicator X2 at T2 
meaning_par3_t2 ~~ res3*meaning_par3_t2  # This allows residual variance on indicator X3 at T2

meaning_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
meaning_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
meaning_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

meaning_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
meaning_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
meaning_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_meaning_hyp2 <- lavaan(mi_lcs_meaning_hyp2, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_meaning_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_meaning_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
673 15 9545.085 9612.761 0.992 0.055 0.025
# parameters of interest
params_lcs_meaning_hyp2 <- broom::tidy(fit_mi_lcs_meaning_hyp2, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("meaning_t2 ~ meaning_t1", "d_meaning_1 =~ meaning_t2", "d_meaning_1 ~ meaning_t1", # change parameters
                           "d_meaning_1 ~1 ", "meaning_t1 ~1 ", "", # means
                           "d_meaning_1 ~~ d_meaning_1")) # variances

kable(params_lcs_meaning_hyp2, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
meaning_t2 ~ meaning_t1 1.000 1.000 1.000 1.017 NA NA
d_meaning_1 =~ meaning_t2 1.000 1.000 1.000 0.698 NA NA
d_meaning_1 ~1 1.021 0.796 1.246 1.527 8.899 0
meaning_t1 ~1 3.209 3.123 3.294 3.292 73.486 0
d_meaning_1 ~~ d_meaning_1 0.387 0.297 0.476 0.865 8.477 0
d_meaning_1 ~ meaning_t1 -0.252 -0.316 -0.189 -0.368 -7.772 0

Participants improved significantly in meaning in life across time, b = 1.021, p = 0.

What happens in the waitlist control group during this time?

Fit model:

Show the code
fit_mi_lcs_meaning_hyp2_cg <- lavaan(mi_lcs_meaning_hyp2, data=df_sbsa2_wide_wb %>% filter(rando=="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_meaning_hyp2_cg, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_meaning_hyp2_cg) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
175 15 2481.44 2528.912 1 0 0.033
# parameters of interest
params_lcs_meaning_hyp2_cg <- broom::tidy(fit_mi_lcs_meaning_hyp2_cg, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("meaning_t2 ~ meaning_t1", "d_meaning_1 =~ meaning_t2", "d_meaning_1 ~ meaning_t1", # change parameters
                           "d_meaning_1 ~1 ", "meaning_t1 ~1 ", "", # means
                           "d_meaning_1 ~~ d_meaning_1")) # variances
kable(params_lcs_meaning_hyp2_cg, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
meaning_t2 ~ meaning_t1 1.000 1.000 1.000 0.990 NA NA
d_meaning_1 =~ meaning_t2 1.000 1.000 1.000 0.662 NA NA
d_meaning_1 ~1 0.972 0.528 1.416 1.378 4.292 0.000
meaning_t1 ~1 3.190 3.008 3.373 3.021 34.294 0.000
d_meaning_1 ~~ d_meaning_1 0.447 0.295 0.599 0.898 5.770 0.000
d_meaning_1 ~ meaning_t1 -0.213 -0.334 -0.092 -0.319 -3.456 0.001

Meaning increases significantly in the control group, b = 0.972, p = 0, although with a somewhat weaker effect size than in the intervention group.

6.2.1.3 Self-esteem

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_selfes_hyp2 <- '
selfes_t1 =~ 1*selfes_par1_t1 + lamb2*selfes_par2_t1 + lamb3*selfes_par3_t1 # This specifies the measurement model for selfes_t1 
selfes_t2 =~ 1*selfes_par1_t2 + lamb2*selfes_par2_t2 + lamb3*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadings

selfes_t2 ~ 1*selfes_t1     # This parameter regresses selfes_t2 perfectly on selfes_t1
d_selfes_1 =~ 1*selfes_t2   # This defines the latent change score factor as measured perfectly by scores on selfes_t2
selfes_t2 ~ 0*1             # This line constrains the intercept of selfes_t2 to 0
selfes_t2 ~~ 0*selfes_t2    # This fixes the variance of selfes_t2 to 0

d_selfes_1 ~ 1             # This estimates the intercept of the change score 
selfes_t1 ~ 1              # This estimates the intercept of selfes_t1 
d_selfes_1 ~~ d_selfes_1   # This estimates the variance of the change scores 
selfes_t1 ~~ selfes_t1     # This estimates the variance of the selfes_t1 
d_selfes_1 ~ selfes_t1     # This estimates the self-feedback parameter

selfes_par1_t1 ~~ selfes_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
selfes_par2_t1 ~~ selfes_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
selfes_par3_t1 ~~ selfes_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

selfes_par1_t1 ~~ res1*selfes_par1_t1   # This allows residual variance on indicator X1 at T1 
selfes_par2_t1 ~~ res2*selfes_par2_t1   # This allows residual variance on indicator X2 at T1
selfes_par3_t1 ~~ res3*selfes_par3_t1   # This allows residual variance on indicator X3 at T1

selfes_par1_t2 ~~ res1*selfes_par1_t2  # This allows residual variance on indicator X1 at T2 
selfes_par2_t2 ~~ res2*selfes_par2_t2  # This allows residual variance on indicator X2 at T2 
selfes_par3_t2 ~~ res3*selfes_par3_t2  # This allows residual variance on indicator X3 at T2

selfes_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
selfes_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
selfes_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

selfes_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
selfes_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
selfes_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_selfes_hyp2 <- lavaan(mi_lcs_selfes_hyp2, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_selfes_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_selfes_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
673 15 7206.632 7274.308 1 0 0.016
# parameters of interest
params_lcs_selfes_hyp2 <- broom::tidy(fit_mi_lcs_selfes_hyp2, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("selfes_t2 ~ selfes_t1", "d_selfes_1 =~ selfes_t2", "d_selfes_1 ~ selfes_t1", # change parameters
                           "d_selfes_1 ~1 ", "selfes_t1 ~1 ", "", # means
                           "d_selfes_1 ~~ d_selfes_1")) # variances

kable(params_lcs_selfes_hyp2, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
selfes_t2 ~ selfes_t1 1.000 1.000 1.000 1.037 NA NA
d_selfes_1 =~ selfes_t2 1.000 1.000 1.000 0.670 NA NA
d_selfes_1 ~1 1.126 0.901 1.352 2.335 9.779 0
selfes_t1 ~1 3.540 3.476 3.604 4.745 108.567 0
d_selfes_1 ~~ d_selfes_1 0.200 0.159 0.240 0.858 9.585 0
d_selfes_1 ~ selfes_t1 -0.244 -0.303 -0.185 -0.377 -8.119 0

Participants increased significantly in self-esteem between the two assessments, b = 1.126, p = 0.

What happens in the waitlist control group during this time?

Fit model:

Show the code
fit_mi_lcs_selfes_hyp2_cg <- lavaan(mi_lcs_selfes_hyp2, data=df_sbsa2_wide_wb %>% filter(rando=="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_selfes_hyp2_cg, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_selfes_hyp2_cg) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
175 15 1724.661 1772.133 1 0 0.02
# parameters of interest
params_lcs_selfes_hyp2_cg <- broom::tidy(fit_mi_lcs_selfes_hyp2_cg, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("selfes_t2 ~ selfes_t1", "d_selfes_1 =~ selfes_t2", "d_selfes_1 ~ selfes_t1", # change parameters
                           "d_selfes_1 ~1 ", "selfes_t1 ~1 ", "", # means
                           "d_selfes_1 ~~ d_selfes_1")) # variances
kable(params_lcs_selfes_hyp2_cg, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
selfes_t2 ~ selfes_t1 1.000 1.000 1.000 0.989 NA NA
d_selfes_1 =~ selfes_t2 1.000 1.000 1.000 0.395 NA NA
d_selfes_1 ~1 0.429 0.163 0.695 1.346 3.163 0.002
selfes_t1 ~1 3.545 3.414 3.675 4.443 53.386 0.000
d_selfes_1 ~~ d_selfes_1 0.099 0.056 0.141 0.971 4.557 0.000
d_selfes_1 ~ selfes_t1 -0.068 -0.139 0.002 -0.171 -1.891 0.059

Self-esteem changes in the control group not significant at preregistered alpha-level (.001), b = 0.429, p = 0.002. Still a positive effect, but weaker effect size than in intervention group.

6.2.1.4 Self concept clarity

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_concept_hyp2 <- '
concept_t1 =~ 1*concept_par1_t1 + lamb2*concept_par2_t1 + lamb3*concept_par3_t1 # This specifies the measurement model for concept_t1 
concept_t2 =~ 1*concept_par1_t2 + lamb2*concept_par2_t2 + lamb3*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadings

concept_t2 ~ 1*concept_t1     # This parameter regresses concept_t2 perfectly on concept_t1
d_concept_1 =~ 1*concept_t2   # This defines the latent change score factor as measured perfectly by scores on concept_t2
concept_t2 ~ 0*1              # This line constrains the intercept of concept_t2 to 0
concept_t2 ~~ 0*concept_t2    # This fixes the variance of concept_t2 to 0

d_concept_1 ~ 1              # This estimates the intercept of the change score 
concept_t1 ~ 1               # This estimates the intercept of concept_t1 
d_concept_1 ~~ d_concept_1   # This estimates the variance of the change scores 
concept_t1 ~~ concept_t1     # This estimates the variance of the concept_t1 
d_concept_1 ~ concept_t1     # This estimates the self-feedback parameter

concept_par1_t1 ~~ concept_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
concept_par2_t1 ~~ concept_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
concept_par3_t1 ~~ concept_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

concept_par1_t1 ~~ res1*concept_par1_t1   # This allows residual variance on indicator X1 at T1 
concept_par2_t1 ~~ res2*concept_par2_t1   # This allows residual variance on indicator X2 at T1
concept_par3_t1 ~~ res3*concept_par3_t1   # This allows residual variance on indicator X3 at T1

concept_par1_t2 ~~ res1*concept_par1_t2  # This allows residual variance on indicator X1 at T2 
concept_par2_t2 ~~ res2*concept_par2_t2  # This allows residual variance on indicator X2 at T2 
concept_par3_t2 ~~ res3*concept_par3_t2  # This allows residual variance on indicator X3 at T2

concept_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
concept_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
concept_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

concept_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
concept_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
concept_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_concept_hyp2 <- lavaan(mi_lcs_concept_hyp2, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_concept_hyp2, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_concept_hyp2) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
673 15 7401.241 7468.917 0.996 0.036 0.019
# parameters of interest
params_lcs_concept_hyp2 <- broom::tidy(fit_mi_lcs_concept_hyp2, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("concept_t2 ~ concept_t1", "d_concept_1 =~ concept_t2", "d_concept_1 ~ concept_t1", # change parameters
                           "d_concept_1 ~1 ", "concept_t1 ~1 ", "", # means
                           "d_concept_1 ~~ d_concept_1")) # variances

kable(params_lcs_concept_hyp2, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
concept_t2 ~ concept_t1 1.000 1.000 1.000 1.021 NA NA
d_concept_1 =~ concept_t2 1.000 1.000 1.000 0.754 NA NA
d_concept_1 ~1 1.071 0.866 1.275 2.144 10.240 0
concept_t1 ~1 3.044 2.983 3.104 4.502 98.796 0
d_concept_1 ~~ d_concept_1 0.210 0.169 0.251 0.842 10.041 0
d_concept_1 ~ concept_t1 -0.294 -0.357 -0.230 -0.397 -9.022 0

Self concept clarity improved significantly across time, b = 1.071, p = 0.

What happens in the waitlist control group during this time?

Fit model:

Show the code
fit_mi_lcs_concept_hyp2_cg <- lavaan(mi_lcs_concept_hyp2, data=df_sbsa2_wide_wb %>% filter(rando=="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_concept_hyp2_cg, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_concept_hyp2_cg) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
175 15 1805.904 1853.376 0.991 0.065 0.026
# parameters of interest
params_lcs_concept_hyp2_cg <- broom::tidy(fit_mi_lcs_concept_hyp2_cg, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("concept_t2 ~ concept_t1", "d_concept_1 =~ concept_t2", "d_concept_1 ~ concept_t1", # change parameters
                           "d_concept_1 ~1 ", "concept_t1 ~1 ", "", # means
                           "d_concept_1 ~~ d_concept_1")) # variances
kable(params_lcs_concept_hyp2_cg, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
concept_t2 ~ concept_t1 1.000 1.000 1.000 0.971 NA NA
d_concept_1 =~ concept_t2 1.000 1.000 1.000 0.611 NA NA
d_concept_1 ~1 0.580 0.207 0.954 1.198 3.045 0.002
concept_t1 ~1 3.122 2.992 3.251 4.056 47.175 0.000
d_concept_1 ~~ d_concept_1 0.218 0.097 0.340 0.929 3.519 0.000
d_concept_1 ~ concept_t1 -0.168 -0.282 -0.053 -0.266 -2.869 0.004

Self concept clarity changes in the control group not significant at preregistered alpha-level (.001), b = 0.58, p = 0.002. Still a positive effect, but weaker effect size than in intervention group.

6.2.2 Follow-up effects (changes from T2 to T3)

6.2.2.1 Life satisfaction

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_swls_hyp2_fu <- '
swls_t2 =~ 1*sw06_01_t2 + lamb2*sw06_02_t2 + lamb3*sw06_03_t2 + lamb4*sw06_04_t2 # This specifies the measurement model for swls_t2 
swls_t3 =~ 1*sw06_01_t3 + lamb2*sw06_02_t3 + lamb3*sw06_03_t3 + lamb4*sw06_04_t3 # This specifies the measurement model for swls_t3 with the equality constrained factor loadings

swls_t3 ~ 1*swls_t2     # This parameter regresses swls_t3 perfectly on swls_t2
d_swls_1 =~ 1*swls_t3   # This defines the latent change score factor as measured perfectly by scores on swls_t3
swls_t3 ~ 0*1           # This line constrains the intercept of swls_t3 to 0
swls_t3 ~~ 0*swls_t3    # This fixes the variance of swls_t3 to 0

d_swls_1 ~ 1           # This estimates the intercept of the change score 
swls_t2 ~ 1            # This estimates the intercept of swls_t2 
d_swls_1 ~~ d_swls_1   # This estimates the variance of the change scores 
swls_t2 ~~ swls_t2     # This estimates the variance of the swls_t2 
d_swls_1 ~ swls_t2     # This estimates the self-feedback parameter

sw06_01_t2 ~~ sw06_01_t3   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t2 ~~ sw06_02_t3   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t2 ~~ sw06_03_t3   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t2 ~~ sw06_04_t3   # This allows residual covariance on indicator X4 across T1 and T2

sw06_01_t2 ~~ res1*sw06_01_t2   # This allows residual variance on indicator X1 at T1 
sw06_02_t2 ~~ res2*sw06_02_t2   # This allows residual variance on indicator X2 at T1
sw06_03_t2 ~~ res3*sw06_03_t2   # This allows residual variance on indicator X3 at T1
sw06_04_t2 ~~ res4*sw06_04_t2   # This allows residual variance on indicator X4 at T1

sw06_01_t3 ~~ res1*sw06_01_t3  # This allows residual variance on indicator X1 at T2 
sw06_02_t3 ~~ res2*sw06_02_t3  # This allows residual variance on indicator X2 at T2 
sw06_03_t3 ~~ res3*sw06_03_t3  # This allows residual variance on indicator X3 at T2
sw06_04_t3 ~~ res4*sw06_04_t3  # This allows residual variance on indicator X4 at T2

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t2 ~ m2*1     # This estimates the intercept of X2 at T1
sw06_03_t2 ~ m3*1     # This estimates the intercept of X3 at T1
sw06_04_t2 ~ m4*1     # This estimates the intercept of X4 at T1

sw06_01_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t3 ~ m2*1     # This estimates the intercept of X2 at T2
sw06_03_t3 ~ m3*1     # This estimates the intercept of X3 at T2
sw06_04_t3 ~ m4*1     # This estimates the intercept of X4 at T2
'
fit_mi_lcs_swls_hyp2_fu <- lavaan(mi_lcs_swls_hyp2_fu, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_swls_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_swls_hyp2_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
579 19 10808.9 10891.76 0.985 0.058 0.022
# parameters of interest
params_lcs_swls_hyp2_fu <- broom::tidy(fit_mi_lcs_swls_hyp2_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("swls_t3 ~ swls_t2", "d_swls_1 =~ swls_t3", "d_swls_1 ~ swls_t2", # change parameters
                           "d_swls_1 ~1 ", "swls_t2 ~1 ", "", # means
                           "d_swls_1 ~~ d_swls_1")) # variances
kable(params_lcs_swls_hyp2_fu, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
swls_t3 ~ swls_t2 1.000 1.000 1.000 0.994 NA NA
d_swls_1 =~ swls_t3 1.000 1.000 1.000 0.532 NA NA
d_swls_1 ~1 0.516 0.306 0.727 0.952 4.802 0
swls_t2 ~1 2.966 2.874 3.059 2.926 63.139 0
d_swls_1 ~~ d_swls_1 0.275 0.178 0.372 0.934 5.551 0
d_swls_1 ~ swls_t2 -0.137 -0.201 -0.073 -0.256 -4.225 0

Life satisfaction further increased from T2 to the T3 follow up, b = 0.516, p = 0.

6.2.2.2 Meaning in life

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_meaning_hyp2_fu <- '
meaning_t2 =~ 1*meaning_par1_t2 + lamb2*meaning_par2_t2 + lamb3*meaning_par3_t2 # This specifies the measurement model for meaning_t2 
meaning_t3 =~ 1*meaning_par1_t3 + lamb2*meaning_par2_t3 + lamb3*meaning_par3_t3 # This specifies the measurement model for meaning_t3 with the equality constrained factor loadings

meaning_t3 ~ 1*meaning_t2     # This parameter regresses meaning_t3 perfectly on meaning_t2
d_meaning_1 =~ 1*meaning_t3   # This defines the latent change score factor as measured perfectly by scores on meaning_t3
meaning_t3 ~ 0*1              # This line constrains the intercept of meaning_t3 to 0
meaning_t3 ~~ 0*meaning_t3    # This fixes the variance of meaning_t3 to 0

d_meaning_1 ~ 1              # This estimates the intercept of the change score 
meaning_t2 ~ 1               # This estimates the intercept of meaning_t2 
d_meaning_1 ~~ d_meaning_1   # This estimates the variance of the change scores 
meaning_t2 ~~ meaning_t2     # This estimates the variance of the meaning_t2 
d_meaning_1 ~ meaning_t2     # This estimates the self-feedback parameter

meaning_par1_t2 ~~ meaning_par1_t3   # This allows residual covariance on indicator X1 across T1 and T2
meaning_par2_t2 ~~ meaning_par2_t3   # This allows residual covariance on indicator X2 across T1 and T2
meaning_par3_t2 ~~ meaning_par3_t3   # This allows residual covariance on indicator X3 across T1 and T2

meaning_par1_t2 ~~ res1*meaning_par1_t2   # This allows residual variance on indicator X1 at T1 
meaning_par2_t2 ~~ res2*meaning_par2_t2   # This allows residual variance on indicator X2 at T1
meaning_par3_t2 ~~ res3*meaning_par3_t2   # This allows residual variance on indicator X3 at T1

meaning_par1_t3 ~~ res1*meaning_par1_t3  # This allows residual variance on indicator X1 at T2 
meaning_par2_t3 ~~ res2*meaning_par2_t3  # This allows residual variance on indicator X2 at T2 
meaning_par3_t3 ~~ res3*meaning_par3_t3  # This allows residual variance on indicator X3 at T2

meaning_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
meaning_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T1
meaning_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T1

meaning_par1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
meaning_par2_t3 ~ m2*1     # This estimates the intercept of X2 at T2
meaning_par3_t3 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_meaning_hyp2_fu <- lavaan(mi_lcs_meaning_hyp2_fu, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_meaning_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_meaning_hyp2_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
579 15 8150.359 8215.779 0.995 0.046 0.031
# parameters of interest
params_lcs_meaning_hyp2_fu <- broom::tidy(fit_mi_lcs_meaning_hyp2_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("meaning_t3 ~ meaning_t2", "d_meaning_1 =~ meaning_t3", "d_meaning_1 ~ meaning_t2", # change parameters
                           "d_meaning_1 ~1 ", "meaning_t2 ~1 ", "", # means
                           "d_meaning_1 ~~ d_meaning_1")) # variances

kable(params_lcs_meaning_hyp2_fu, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
meaning_t3 ~ meaning_t2 1.000 1.000 1.000 0.964 NA NA
d_meaning_1 =~ meaning_t3 1.000 1.000 1.000 0.674 NA NA
d_meaning_1 ~1 0.855 0.585 1.125 1.200 6.216 0
meaning_t2 ~1 3.412 3.316 3.509 3.347 69.108 0
d_meaning_1 ~~ d_meaning_1 0.463 0.342 0.585 0.912 7.467 0
d_meaning_1 ~ meaning_t2 -0.207 -0.280 -0.133 -0.296 -5.498 0

Meaning in life further increased from T2 to the T3 follow up, b = 0.855, p = 0.

6.2.2.3 Self-esteem

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_selfes_hyp2_fu <- '
selfes_t2 =~ 1*selfes_par1_t2 + lamb2*selfes_par2_t2 + lamb3*selfes_par3_t2 # This specifies the measurement model for selfes_t2 
selfes_t3 =~ 1*selfes_par1_t3 + lamb2*selfes_par2_t3 + lamb3*selfes_par3_t3 # This specifies the measurement model for selfes_t3 with the equality constrained factor loadings

selfes_t3 ~ 1*selfes_t2     # This parameter regresses selfes_t3 perfectly on selfes_t2
d_selfes_1 =~ 1*selfes_t3   # This defines the latent change score factor as measured perfectly by scores on selfes_t3
selfes_t3 ~ 0*1             # This line constrains the intercept of selfes_t3 to 0
selfes_t3 ~~ 0*selfes_t3    # This fixes the variance of selfes_t3 to 0

d_selfes_1 ~ 1             # This estimates the intercept of the change score 
selfes_t2 ~ 1              # This estimates the intercept of selfes_t2 
d_selfes_1 ~~ d_selfes_1   # This estimates the variance of the change scores 
selfes_t2 ~~ selfes_t2     # This estimates the variance of the selfes_t2 
d_selfes_1 ~ selfes_t2     # This estimates the self-feedback parameter

selfes_par1_t2 ~~ selfes_par1_t3   # This allows residual covariance on indicator X1 across T1 and T2
selfes_par2_t2 ~~ selfes_par2_t3   # This allows residual covariance on indicator X2 across T1 and T2
selfes_par3_t2 ~~ selfes_par3_t3   # This allows residual covariance on indicator X3 across T1 and T2

selfes_par1_t2 ~~ res1*selfes_par1_t2   # This allows residual variance on indicator X1 at T1 
selfes_par2_t2 ~~ res2*selfes_par2_t2   # This allows residual variance on indicator X2 at T1
selfes_par3_t2 ~~ res3*selfes_par3_t2   # This allows residual variance on indicator X3 at T1

selfes_par1_t3 ~~ res1*selfes_par1_t3  # This allows residual variance on indicator X1 at T2 
selfes_par2_t3 ~~ res2*selfes_par2_t3  # This allows residual variance on indicator X2 at T2 
selfes_par3_t3 ~~ res3*selfes_par3_t3  # This allows residual variance on indicator X3 at T2

selfes_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
selfes_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T1
selfes_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T1

selfes_par1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
selfes_par2_t3 ~ m2*1     # This estimates the intercept of X2 at T2
selfes_par3_t3 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_selfes_hyp2_fu <- lavaan(mi_lcs_selfes_hyp2_fu, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_selfes_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_selfes_hyp2_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
579 15 5982.84 6048.26 1 0 0.015
# parameters of interest
params_lcs_selfes_hyp2_fu <- broom::tidy(fit_mi_lcs_selfes_hyp2_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("selfes_t3 ~ selfes_t2", "d_selfes_1 =~ selfes_t3", "d_selfes_1 ~ selfes_t2", # change parameters
                           "d_selfes_1 ~1 ", "selfes_t2 ~1 ", "", # means
                           "d_selfes_1 ~~ d_selfes_1")) # variances

kable(params_lcs_selfes_hyp2_fu, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
selfes_t3 ~ selfes_t2 1.000 1.000 1.000 0.973 NA NA
d_selfes_1 =~ selfes_t3 1.000 1.000 1.000 0.499 NA NA
d_selfes_1 ~1 0.445 0.234 0.656 1.213 4.138 0
selfes_t2 ~1 3.814 3.748 3.880 5.329 113.354 0
d_selfes_1 ~~ d_selfes_1 0.129 0.099 0.160 0.960 8.377 0
d_selfes_1 ~ selfes_t2 -0.103 -0.155 -0.051 -0.201 -3.870 0

Self-esteem further increased from T2 to the T3 follow up, b = 0.445, p = 0.

6.2.2.4 Self concept clarity

Fit model:

Show the code
# Code snippets adapted from Kievit et al. (2018) -- CC-BY -- https://doi.org/10.1016/j.dcn.2017.11.007

# Fit the multiple indicator Univariate Latent Change Score model
mi_lcs_concept_hyp2_fu <- '
concept_t2 =~ 1*concept_par1_t2 + lamb2*concept_par2_t2 + lamb3*concept_par3_t2 # This specifies the measurement model for concept_t2 
concept_t3 =~ 1*concept_par1_t3 + lamb2*concept_par2_t3 + lamb3*concept_par3_t3 # This specifies the measurement model for concept_t3 with the equality constrained factor loadings

concept_t3 ~ 1*concept_t2     # This parameter regresses concept_t3 perfectly on concept_t2
d_concept_1 =~ 1*concept_t3   # This defines the latent change score factor as measured perfectly by scores on concept_t3
concept_t3 ~ 0*1              # This line constrains the intercept of concept_t3 to 0
concept_t3 ~~ 0*concept_t3    # This fixes the variance of concept_t3 to 0

d_concept_1 ~ 1              # This estimates the intercept of the change score 
concept_t2 ~ 1               # This estimates the intercept of concept_t2 
d_concept_1 ~~ d_concept_1   # This estimates the variance of the change scores 
concept_t2 ~~ concept_t2     # This estimates the variance of the concept_t2 
d_concept_1 ~ concept_t2     # This estimates the self-feedback parameter

concept_par1_t2 ~~ concept_par1_t3   # This allows residual covariance on indicator X1 across T1 and T2
concept_par2_t2 ~~ concept_par2_t3   # This allows residual covariance on indicator X2 across T1 and T2
concept_par3_t2 ~~ concept_par3_t3   # This allows residual covariance on indicator X3 across T1 and T2

concept_par1_t2 ~~ res1*concept_par1_t2   # This allows residual variance on indicator X1 at T1 
concept_par2_t2 ~~ res2*concept_par2_t2   # This allows residual variance on indicator X2 at T1
concept_par3_t2 ~~ res3*concept_par3_t2   # This allows residual variance on indicator X3 at T1

concept_par1_t3 ~~ res1*concept_par1_t3  # This allows residual variance on indicator X1 at T2 
concept_par2_t3 ~~ res2*concept_par2_t3  # This allows residual variance on indicator X2 at T2 
concept_par3_t3 ~~ res3*concept_par3_t3  # This allows residual variance on indicator X3 at T2

concept_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
concept_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T1
concept_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T1

concept_par1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
concept_par2_t3 ~ m2*1     # This estimates the intercept of X2 at T2
concept_par3_t3 ~ m3*1     # This estimates the intercept of X3 at T2
'
fit_mi_lcs_concept_hyp2_fu <- lavaan(mi_lcs_concept_hyp2_fu, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_concept_hyp2_fu, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary:

# model fit
kable(broom::glance(fit_mi_lcs_concept_hyp2_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
579 15 6175.822 6241.241 0.996 0.042 0.019
# parameters of interest
params_lcs_concept_hyp2_fu <- broom::tidy(fit_mi_lcs_concept_hyp2_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("concept_t3 ~ concept_t2", "d_concept_1 =~ concept_t3", "d_concept_1 ~ concept_t2", # change parameters
                           "d_concept_1 ~1 ", "concept_t2 ~1 ", "", # means
                           "d_concept_1 ~~ d_concept_1")) # variances

kable(params_lcs_concept_hyp2_fu, digits = 3)
term estimate conf.low conf.high std.all statistic p.value
concept_t3 ~ concept_t2 1.000 1.000 1.000 0.969 NA NA
d_concept_1 =~ concept_t3 1.000 1.000 1.000 0.600 NA NA
d_concept_1 ~1 0.555 0.352 0.758 1.407 5.357 0
concept_t2 ~1 3.226 3.163 3.288 5.063 101.242 0
d_concept_1 ~~ d_concept_1 0.145 0.111 0.179 0.934 8.418 0
d_concept_1 ~ concept_t2 -0.159 -0.218 -0.099 -0.257 -5.243 0

Self concept clarity further increased from T2 to the T3 follow up, b = 0.555, p = 0.

I also checked whether there are differences if I model the two intervention groups (self-improvement / self-acceptance) separately. Changes are more or less the same across the two groups.


6.3 H3: Distance between ideal- and current-self over time (H1 in paper)

The distance between ideal- and current-self will decrease in both intervention groups (but not in the control group between T1 and T2).

We will use two strategies to test this hypothesis. First, we will compute the Fisher z-transformed profile correlation between current- and ideal-self and test whether it increased across assessments. Second, we will test whether the squared difference between current- and ideal-self rating for each Big Five trait decreased across assessments. We will test mean-level differences in profile correlations and squared differences between baseline and follow up using mixed-effects models. Our main focus will be changes from T1 to T2 and we will check in a second set of models whether any changes persist from T2 to T3.

6.3.1 Profile similarity

Reshape to wide:

Show the code
# reshape to wide
df_sbsa2_wide_profdiff <- df_sbsa2 %>% 
  arrange(pid, time) %>% 
  select(pid, rando, time, profile_corr_item_z, profile_corr_facet_z, ends_with("_sqdiff")) %>% 
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = -c(pid, rando, time))
6.3.1.1 Intervention effects (changes from T1 to T2)

Checking assumptions

# item-level profile correlation
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t1)) 

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t1)
W = 0.93322, p-value = 2.657e-15
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(profile_corr_item_z_t2) - df_sbsa2_wide_profdiff %>%     filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t1)
D = 0.078375, p-value = 6.384e-09
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t1))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 671 0.42 0.49   0.38    0.39 0.47 -1.09 3.39  4.48 0.81     2.34 0.02
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 575 0.56 0.49   0.53    0.54 0.51 -1.07 2.17  3.23 0.27     0.02 0.02
# facet-level profile correlation
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t1)) 

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t1)
W = 0.93724, p-value = 8.082e-15
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(profile_corr_facet_z_t2) - df_sbsa2_wide_profdiff %>%     filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t1)
D = 0.080938, p-value = 1.393e-09
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t1))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 672 0.35 0.66   0.29    0.31 0.64 -1.23 3.77     5 0.69     1.04 0.03
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 576 0.52 0.66   0.47    0.49 0.66 -1.34 3.09  4.43 0.37     0.02 0.03

Results summary:

t_profile_corr_item <- t.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2),
                              df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t1), 
                              paired = TRUE)
t_profile_corr_facet <- t.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2), 
                               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t1), 
                               paired = TRUE)

kable(bind_rows(tidy(t_profile_corr_item), tidy(t_profile_corr_facet)) %>% mutate(outcome = c("Item-level profile corr.", "Facet-level profile corr.")) %>% select(outcome, everything()), digits = 3)
outcome estimate statistic p.value parameter conf.low conf.high method alternative
Item-level profile corr. 0.131 8.684 0 571 0.101 0.160 Paired t-test two.sided
Facet-level profile corr. 0.169 8.395 0 573 0.129 0.208 Paired t-test two.sided
# effect sizes
d_profile_corr_item <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>% 
                                        filter(rando!="Waitlist-Control" & time %in% c(1,2)))
d_profile_corr_item$cohen.d
                        lower    effect     upper
profile_corr_item_z 0.1668914 0.2788659 0.3907299
d_profile_corr_facet <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>% 
                                         filter(rando!="Waitlist-Control" & time %in% c(1,2)))
d_profile_corr_facet$cohen.d
                         lower    effect     upper
profile_corr_facet_z 0.1475916 0.2593992 0.3711035

Significantly higher profile correlations at the second measurement occasion, both for the item-level profile correlation and the facet-level profile correlations.

What happens in the waitlist control group during this time?

t_profile_corr_item_cg <- t.test(df_sbsa2_wide_profdiff %>% filter(rando=="Waitlist-Control") %>% pull(profile_corr_item_z_t2),
                              df_sbsa2_wide_profdiff %>% filter(rando=="Waitlist-Control") %>% pull(profile_corr_item_z_t1), 
                              paired = TRUE)
t_profile_corr_facet_cg <- t.test(df_sbsa2_wide_profdiff %>% filter(rando=="Waitlist-Control") %>% pull(profile_corr_facet_z_t2), 
                               df_sbsa2_wide_profdiff %>% filter(rando=="Waitlist-Control") %>% pull(profile_corr_facet_z_t1), 
                               paired = TRUE)

kable(bind_rows(tidy(t_profile_corr_item_cg), tidy(t_profile_corr_facet_cg)) %>% mutate(outcome = c("Item-level profile corr.", "Facet-level profile corr.")) %>% select(outcome, everything()), digits = 5)
outcome estimate statistic p.value parameter conf.low conf.high method alternative
Item-level profile corr. 0.10158 3.36943 0.00097 145 0.0420 0.16117 Paired t-test two.sided
Facet-level profile corr. 0.12900 3.24385 0.00146 145 0.0504 0.20760 Paired t-test two.sided
# effect sizes
d_profile_corr_item_cg <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>% 
                                        filter(rando=="Waitlist-Control" & time %in% c(1,2)))
d_profile_corr_item_cg$cohen.d
                          lower    effect     upper
profile_corr_item_z -0.02087351 0.1993958 0.4193518
d_profile_corr_facet_cg <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>% 
                                         filter(rando=="Waitlist-Control" & time %in% c(1,2)))
d_profile_corr_facet_cg$cohen.d
                           lower    effect     upper
profile_corr_facet_z -0.04429333 0.1758341 0.3956873

Slightly higher higher profile correlations at the second measurement occasion also in the controlg group, although this is only significant at .001 for the item-level profile correlation but not for the facet-level profile correlations.

6.3.1.2 Follow-up effects (changes from T2 to T3)

Checking assumptions

# item-level profile correlation
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t3) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t2)
W = 0.91279, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t3) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(profile_corr_item_z_t3) - df_sbsa2_wide_profdiff %>%     filter(rando != "Waitlist-Control") %>% pull(profile_corr_item_z_t2)
D = 0.062819, p-value = 5.247e-05
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 575 0.56 0.49   0.53    0.54 0.51 -1.07 2.17  3.23 0.27     0.02 0.02
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t3))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 514 0.61 0.55   0.57    0.59 0.55 -1.22 3.34  4.56 0.48      1.4 0.02
# facet-level profile correlation
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t3) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t2)
W = 0.92574, p-value = 3.207e-15
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t3) -
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(profile_corr_facet_z_t3) - df_sbsa2_wide_profdiff %>%     filter(rando != "Waitlist-Control") %>% pull(profile_corr_facet_z_t2)
D = 0.067574, p-value = 7.904e-06
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2))
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 576 0.52 0.66   0.47    0.49 0.66 -1.34 3.09  4.43 0.37     0.02 0.03
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t3))
   vars   n mean   sd median trimmed  mad  min  max range skew kurtosis   se
X1    1 514 0.59 0.72   0.54    0.56 0.71 -1.7 3.72  5.42 0.47     0.54 0.03

Results summary:

t_profile_corr_item_fu <- t.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t3), 
                                 df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_item_z_t2), 
                                 paired = TRUE)
t_profile_corr_facet_fu <- t.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t3), 
                                  df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(profile_corr_facet_z_t2), 
                                  paired = TRUE)

kable(bind_rows(tidy(t_profile_corr_item_fu), tidy(t_profile_corr_facet_fu)) %>% mutate(outcome = c("Item-level profile corr.", "Facet-level profile corr.")) %>% select(outcome, everything()), digits = 3)
outcome estimate statistic p.value parameter conf.low conf.high method alternative
Item-level profile corr. 0.040 2.583 0.010 511 0.010 0.071 Paired t-test two.sided
Facet-level profile corr. 0.066 3.097 0.002 511 0.024 0.108 Paired t-test two.sided
# effect sizes
d_profile_corr_item_fu <- psych::cohen.d(profile_corr_item_z ~ time, data = df_sbsa2 %>% 
                                           filter(rando!="Waitlist-Control" & time %in% c(2,3)))
d_profile_corr_item_fu$cohen.d
                          lower    effect     upper
profile_corr_item_z -0.01900003 0.1000698 0.2190937
d_profile_corr_facet_fu <- psych::cohen.d(profile_corr_facet_z ~ time, data = df_sbsa2 %>% 
                                            filter(rando!="Waitlist-Control" & time %in% c(2,3)))
d_profile_corr_facet_fu$cohen.d
                           lower    effect     upper
profile_corr_facet_z -0.01257597 0.1064569 0.2254401

Profile correlations stay stable from the second measurement occasion to the third when evaluated at alpha=.001, both for the item-level profile correlations and the facet-level profile correlations. Slight increase if looking at effect sizes.

6.3.1.3 Summary plot
profile_df_plot <- df_sbsa2 %>% 
  select(pid, time, rando, profile_corr_item_z, profile_corr_facet_z) %>% 
  pivot_longer(-c(pid, time, rando), names_to = "itemfacet", values_to = "corr") %>% 
  filter(!is.na(corr)) %>% 
  mutate(itemfacet2 = fct_recode(itemfacet, "Item-level" = "profile_corr_item_z", "Facet-level" = "profile_corr_facet_z"),
         itemfacet2 = fct_reorder(itemfacet2, corr, .desc = F))

cowplot::plot_grid(
  ggplot(profile_df_plot %>% filter(rando!="Waitlist-Control")) + 
  aes(x = as.factor(time), y = corr) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  facet_wrap(vars(itemfacet2)) +
  labs(x = "Measurement Occasion", y = "Profile correlation", 
       title = "Distance between ideal- and current-self in intervention groups") + 
  theme_bw(),
  ggplot(profile_df_plot %>% filter(rando=="Waitlist-Control")) + 
  aes(x = as.factor(time), y = corr) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  facet_wrap(vars(itemfacet2)) +
  labs(x = "Measurement Occasion", y = "Profile correlation", 
       title = "Distance between ideal- and current-self in waitlist control group") + 
  theme_bw(),
  ncol = 1, align = "vt"
)

Significantly higher profile correlations at the second measurement occasion, both for the item-level profile correlation and the facet-level profile correlations. Further increases (but only slightly) at the T3 follow-up. However, we also see a pattern of increases in the waitlist control group although with higher uncertainty of estimates (smaller sample). We would not have expected that from T1 to T2, but only from T2 to T3.

6.3.2 Individual traits: squared differences

6.3.2.1 Intervention effects (changes from T1 to T2)

Checking assumptions

# extra
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t1))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(extra_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(extra_sqdiff_t1)
W = 0.90382, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(extra_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(extra_sqdiff_t1)
D = 0.12962, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t1))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 674 1.84 1.98   1.17     1.5 1.48   0 11.67 11.67 1.57     2.63 0.08
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 1.47 1.71   0.84    1.14 1.07   0 10.03 10.03 1.87     3.83 0.07
# agree
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t1))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(agree_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(agree_sqdiff_t1)
W = 0.75936, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(agree_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(agree_sqdiff_t1)
D = 0.16923, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t1))
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 673  0.5 0.81   0.17    0.33 0.25   0 7.56  7.56 3.64    20.07 0.03
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 0.39 0.83   0.11    0.24 0.16   0 12.84 12.84 7.93    97.34 0.03
# consc
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t1))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(consc_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(consc_sqdiff_t1)
W = 0.87992, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(consc_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(consc_sqdiff_t1)
D = 0.12582, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t1))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 674  1.7 2.03      1    1.31 1.32   0  16    16 2.08      6.1 0.08
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 1.46 1.85   0.84     1.1 1.15   0 14.06 14.06 2.19     6.64 0.08
# neuro
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t1))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(neuro_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(neuro_sqdiff_t1)
W = 0.88583, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(neuro_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(neuro_sqdiff_t1)
D = 0.14624, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t1))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 674 3.36 3.44   2.25    2.79 2.68   0  16    16 1.34     1.27 0.13
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 577 2.66 2.97   1.56    2.11 1.95   0  16    16 1.64      2.6 0.12
# openn
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t1))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(openn_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(openn_sqdiff_t1)
W = 0.63533, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t1))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(openn_sqdiff_t2) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(openn_sqdiff_t1)
D = 0.19368, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t1))
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 673 0.47 0.92   0.11    0.27 0.16   0 9.51  9.51 4.59    29.24 0.04
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 576 0.39 0.69   0.11    0.23 0.16   0 6.25  6.25 4.03    22.73 0.03

Results summary:

mod_traits_sqdiff <- df_sbsa2_wide_profdiff %>% 
  filter(rando!="Waitlist-Control") %>% 
  select(-starts_with("profile"), -rando, -ends_with("_t3")) %>% 
  pivot_longer(-c(pid), 
               names_to = c("test", "time"), values_to = "score", 
               names_pattern = "(.*)_(t1|t2)") %>% 
  filter(!is.na(score)) %>% 
  group_by(pid, test) %>% 
  mutate(assessments = n()) %>% 
  ungroup() %>% 
  filter(assessments==2) %>% 
  select(-assessments) %>% 
  group_nest(test) %>% 
  mutate(t_tests = map(data, ~t.test(score ~ relevel(as.factor(time), "t2"), # need to relevel this to get T2-T1 diff (not sure why)
                                     data = .x, paired = TRUE))) %>% 
  pull(t_tests) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

mod_traits_unlist <- mod_traits_sqdiff[[1]] %>% tidy()
for (i in 2:length(mod_traits_sqdiff)) {
  mod_traits_unlist <- bind_rows(mod_traits_unlist, mod_traits_sqdiff[[i]] %>% tidy())
}

kable(mod_traits_unlist %>% mutate(outcome = sort(names(b5_vars))) %>% 
        select(outcome, everything()) %>% arrange(factor(outcome, levels = (names(b5_vars)))), digits = 3) # order by BFI traits
outcome estimate statistic p.value parameter conf.low conf.high method alternative
extraversion -0.372 -6.354 0.000 576 -0.487 -0.257 Paired t-test two.sided
agreeableness -0.097 -3.536 0.000 575 -0.151 -0.043 Paired t-test two.sided
conscientiousness -0.169 -2.890 0.004 576 -0.284 -0.054 Paired t-test two.sided
neuroticism -0.697 -6.865 0.000 576 -0.896 -0.498 Paired t-test two.sided
openness -0.076 -2.587 0.010 574 -0.134 -0.018 Paired t-test two.sided
sociability -0.782 -7.573 0.000 574 -0.985 -0.579 Paired t-test two.sided
assertiveness -0.239 -3.030 0.003 573 -0.394 -0.084 Paired t-test two.sided
energy -0.337 -3.541 0.000 575 -0.523 -0.150 Paired t-test two.sided
compassion -0.118 -2.769 0.006 575 -0.201 -0.034 Paired t-test two.sided
respectfulness -0.012 -0.321 0.749 572 -0.086 0.062 Paired t-test two.sided
trust -0.329 -4.856 0.000 574 -0.462 -0.196 Paired t-test two.sided
organization -0.149 -1.777 0.076 575 -0.314 0.016 Paired t-test two.sided
productiveness -0.453 -4.519 0.000 572 -0.650 -0.256 Paired t-test two.sided
responsibility -0.139 -2.065 0.039 573 -0.271 -0.007 Paired t-test two.sided
anxiety -0.681 -4.592 0.000 576 -0.972 -0.389 Paired t-test two.sided
depression -0.887 -7.570 0.000 574 -1.117 -0.657 Paired t-test two.sided
volatility -0.603 -4.782 0.000 576 -0.851 -0.355 Paired t-test two.sided
curiosity -0.044 -1.039 0.299 573 -0.128 0.040 Paired t-test two.sided
aesthetic -0.053 -1.359 0.175 572 -0.130 0.024 Paired t-test two.sided
imagination -0.215 -3.559 0.000 574 -0.334 -0.097 Paired t-test two.sided
# effect sizes
cohend_cust = function(outcome, df) {
  form = as.formula(paste0(outcome, " ~ time"))
  psych::cohen.d(form, data = df)
}

d_trait <- cohend_cust(paste0(str_trunc(names(b5_vars)[1], 5, ellipsis = ""), "_sqdiff"), 
                       df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(1,2)))
d_traits_unlist <- as_tibble(d_trait$cohen.d)
for (i in 2:length(names(b5_vars))) {
  d_trait <- cohend_cust(paste0(str_trunc(names(b5_vars)[i], 5, ellipsis = ""), "_sqdiff"), 
                         df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(1,2)))
  d_traits_unlist <- bind_rows(d_traits_unlist, as_tibble(d_trait$cohen.d))
}
kable(d_traits_unlist %>% mutate(outcome = names(b5_vars)) %>% select(outcome, everything()), digits = 3)
outcome lower effect upper
extraversion -0.310 -0.199 -0.088
agreeableness -0.247 -0.135 -0.024
conscientiousness -0.235 -0.124 -0.013
neuroticism -0.328 -0.217 -0.105
openness -0.212 -0.101 0.010
sociability -0.345 -0.233 -0.122
assertiveness -0.219 -0.108 0.003
energy -0.268 -0.157 -0.045
compassion -0.231 -0.120 -0.008
respectfulness -0.173 -0.062 0.050
trust -0.303 -0.191 -0.080
organization -0.202 -0.091 0.020
productiveness -0.286 -0.174 -0.063
responsibility -0.223 -0.112 0.000
anxiety -0.272 -0.160 -0.049
depression -0.351 -0.240 -0.128
volatility -0.283 -0.172 -0.060
curiosity -0.161 -0.049 0.062
aesthetic -0.178 -0.066 0.045
imagination -0.235 -0.124 -0.012

Significantly lower squared mean-level differences at the second measurement occasion for extraversion, agreeableness, and neuroticism (at .001). For conscientiousness and openness only at p < .01. On the level of the 15 BFI-2 facets, we find 8 significant effects (at .001) where squared mean-level differences were reduced. For example, pronounced effect for energy but no effect for assertiveness.

What happens in the waitlist control group during this time?

mod_traits_sqdiff_cg <- df_sbsa2_wide_profdiff %>% 
  filter(rando=="Waitlist-Control") %>% 
  select(-starts_with("profile"), -rando, -ends_with("_t3")) %>% 
  pivot_longer(-c(pid), 
               names_to = c("test", "time"), values_to = "score", 
               names_pattern = "(.*)_(t1|t2)") %>% 
  filter(!is.na(score)) %>% 
  group_by(pid, test) %>% 
  mutate(assessments = n()) %>% 
  ungroup() %>% 
  filter(assessments==2) %>% 
  select(-assessments) %>% 
  group_nest(test) %>% 
  mutate(t_tests = map(data, ~t.test(score ~ relevel(as.factor(time), "t2"), # need to relevel this to get T2-T1 diff (not sure why)
                                     data = .x, paired = TRUE))) %>% 
  pull(t_tests) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

mod_traits_unlist_cg <- mod_traits_sqdiff_cg[[1]] %>% tidy()
for (i in 2:length(mod_traits_sqdiff_cg)) {
  mod_traits_unlist_cg <- bind_rows(mod_traits_unlist_cg, mod_traits_sqdiff_cg[[i]] %>% tidy())
}

kable(mod_traits_unlist_cg %>% mutate(outcome = sort(names(b5_vars))) %>% 
        select(outcome, everything()) %>% arrange(factor(outcome, levels = (names(b5_vars)))), digits = 3) # order by BFI traits
outcome estimate statistic p.value parameter conf.low conf.high method alternative
extraversion -0.371 -2.622 0.010 145 -0.650 -0.091 Paired t-test two.sided
agreeableness -0.158 -2.381 0.019 145 -0.290 -0.027 Paired t-test two.sided
conscientiousness -0.347 -3.151 0.002 145 -0.565 -0.130 Paired t-test two.sided
neuroticism -0.600 -3.067 0.003 145 -0.986 -0.213 Paired t-test two.sided
openness -0.052 -1.042 0.299 145 -0.151 0.047 Paired t-test two.sided
sociability -0.451 -2.337 0.021 145 -0.833 -0.070 Paired t-test two.sided
assertiveness -0.375 -1.927 0.056 145 -0.759 0.010 Paired t-test two.sided
energy -0.495 -2.212 0.029 145 -0.937 -0.053 Paired t-test two.sided
compassion -0.268 -2.470 0.015 145 -0.482 -0.053 Paired t-test two.sided
respectfulness -0.092 -1.222 0.224 145 -0.242 0.057 Paired t-test two.sided
trust -0.213 -1.634 0.104 145 -0.470 0.045 Paired t-test two.sided
organization -0.556 -3.541 0.001 145 -0.867 -0.246 Paired t-test two.sided
productiveness -0.544 -3.182 0.002 145 -0.882 -0.206 Paired t-test two.sided
responsibility -0.304 -2.500 0.014 145 -0.545 -0.064 Paired t-test two.sided
anxiety -0.625 -2.144 0.034 145 -1.200 -0.049 Paired t-test two.sided
depression -0.745 -3.091 0.002 145 -1.222 -0.269 Paired t-test two.sided
volatility -0.596 -2.357 0.020 145 -1.095 -0.096 Paired t-test two.sided
curiosity -0.068 -1.089 0.278 145 -0.190 0.055 Paired t-test two.sided
aesthetic -0.036 -0.363 0.717 145 -0.232 0.160 Paired t-test two.sided
imagination -0.074 -0.569 0.570 145 -0.329 0.182 Paired t-test two.sided
# effect sizes
d_trait_cg <- cohend_cust(paste0(str_trunc(names(b5_vars)[1], 5, ellipsis = ""), "_sqdiff"), 
                       df_sbsa2 %>% filter(rando=="Waitlist-Control" & time %in% c(1,2)))
d_traits_unlist_cg <- as_tibble(d_trait_cg$cohen.d)
for (i in 2:length(names(b5_vars))) {
  d_trait_cg <- cohend_cust(paste0(str_trunc(names(b5_vars)[i], 5, ellipsis = ""), "_sqdiff"), 
                         df_sbsa2 %>% filter(rando=="Waitlist-Control" & time %in% c(1,2)))
  d_traits_unlist_cg <- bind_rows(d_traits_unlist_cg, as_tibble(d_trait_cg$cohen.d))
}
kable(d_traits_unlist_cg %>% mutate(outcome = names(b5_vars)) %>% select(outcome, everything()), digits = 3)
outcome lower effect upper
extraversion -0.415 -0.195 0.025
agreeableness -0.410 -0.190 0.030
conscientiousness -0.434 -0.214 0.007
neuroticism -0.380 -0.160 0.060
openness -0.310 -0.090 0.130
sociability -0.388 -0.169 0.051
assertiveness -0.366 -0.146 0.074
energy -0.410 -0.191 0.030
compassion -0.480 -0.260 -0.039
respectfulness -0.337 -0.118 0.102
trust -0.296 -0.076 0.143
organization -0.436 -0.216 0.004
productiveness -0.405 -0.185 0.035
responsibility -0.426 -0.206 0.014
anxiety -0.355 -0.135 0.085
depression -0.386 -0.166 0.054
volatility -0.354 -0.134 0.086
curiosity -0.322 -0.102 0.118
aesthetic -0.298 -0.079 0.141
imagination -0.261 -0.042 0.178

In the control group, significantly lower squared mean-level differences at the second measurement occasion only for facet organization (at .001). For extraversion, agreeableness, conscientiousness, and neuroticism only at p < .05 (as well as for 8 facets). However, in terms of effect sizes, relatively similar effects to intervention group.

6.3.2.2 Follow-up effects (changes from T2 to T3)

Checking assumptions

# extra
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(extra_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(extra_sqdiff_t2)
W = 0.91718, p-value = 3.875e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(extra_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(extra_sqdiff_t2)
D = 0.12883, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 1.47 1.71   0.84    1.14 1.07   0 10.03 10.03 1.87     3.83 0.07
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(extra_sqdiff_t3))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 514 1.37 1.65   0.69    1.06 0.94   0   9     9 1.84     3.81 0.07
# agree
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(agree_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(agree_sqdiff_t2)
W = 0.70258, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(agree_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(agree_sqdiff_t2)
D = 0.17613, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 0.39 0.83   0.11    0.24 0.16   0 12.84 12.84 7.93    97.34 0.03
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(agree_sqdiff_t3))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 514 0.36 0.68   0.11    0.23 0.16   0   9     9 6.09    59.52 0.03
# consc
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(consc_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(consc_sqdiff_t2)
W = 0.81404, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(consc_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(consc_sqdiff_t2)
D = 0.15513, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 577 1.46 1.85   0.84     1.1 1.15   0 14.06 14.06 2.19     6.64 0.08
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(consc_sqdiff_t3))
   vars   n mean   sd median trimmed  mad min   max range skew kurtosis   se
X1    1 514 1.35 1.81   0.69    0.98 0.96   0 11.67 11.67 2.39        7 0.08
# neuro
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(neuro_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(neuro_sqdiff_t2)
W = 0.9264, p-value = 3.804e-15
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(neuro_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(neuro_sqdiff_t2)
D = 0.13798, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 577 2.66 2.97   1.56    2.11 1.95   0  16    16 1.64      2.6 0.12
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(neuro_sqdiff_t3))
   vars   n mean   sd median trimmed mad min max range skew kurtosis   se
X1    1 514 2.44 2.76   1.36    1.95 1.7   0  16    16 1.83     4.04 0.12
# openn
shapiro.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2))

    Shapiro-Wilk normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(openn_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>% pull(openn_sqdiff_t2)
W = 0.7161, p-value < 2.2e-16
lillie.test(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t3) - 
               df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2))

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  df_sbsa2_wide_profdiff %>% filter(rando != "Waitlist-Control") %>%     pull(openn_sqdiff_t3) - df_sbsa2_wide_profdiff %>% filter(rando !=     "Waitlist-Control") %>% pull(openn_sqdiff_t2)
D = 0.19517, p-value < 2.2e-16
# descriptives
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t2))
   vars   n mean   sd median trimmed  mad min  max range skew kurtosis   se
X1    1 576 0.39 0.69   0.11    0.23 0.16   0 6.25  6.25 4.03    22.73 0.03
psych::describe(df_sbsa2_wide_profdiff %>% filter(rando!="Waitlist-Control") %>% pull(openn_sqdiff_t3))
   vars   n mean  sd median trimmed  mad min   max range skew kurtosis   se
X1    1 514 0.42 0.9   0.11    0.23 0.16   0 11.67 11.67 6.54    62.09 0.04

Results summary:

mod_traits_sqdiff_fu <- df_sbsa2_wide_profdiff %>% 
  filter(rando!="Waitlist-Control") %>% 
  select(-starts_with("profile"), -rando, -ends_with("_t1")) %>% 
  pivot_longer(-c(pid), 
               names_to = c("test", "time"), values_to = "score", 
               names_pattern = "(.*)_(t2|t3)") %>% 
  filter(!is.na(score)) %>% 
  group_by(pid, test) %>% 
  mutate(assessments = n()) %>% 
  ungroup() %>% 
  filter(assessments==2) %>% 
  select(-assessments) %>% 
  group_nest(test) %>% 
  mutate(t_tests = map(data, ~t.test(score ~ relevel(as.factor(time), "t3"), # need to relevel this to get T3-T2 diff (not sure why)
                                     data = .x, paired = TRUE))) %>% 
  pull(t_tests) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

mod_traits_unlist_fu <- mod_traits_sqdiff_fu[[1]] %>% tidy()
for (i in 2:length(mod_traits_sqdiff_fu)) {
  mod_traits_unlist_fu <- bind_rows(mod_traits_unlist_fu, mod_traits_sqdiff_fu[[i]] %>% tidy())
}

kable(mod_traits_unlist_fu %>% mutate(outcome = sort(names(b5_vars))) %>% 
        select(outcome, everything()) %>% arrange(factor(outcome, levels = (names(b5_vars)))), digits = 3) # order by BFI traits
outcome estimate statistic p.value parameter conf.low conf.high method alternative
extraversion -0.096 -1.820 0.069 511 -0.199 0.008 Paired t-test two.sided
agreeableness -0.007 -0.304 0.761 511 -0.053 0.038 Paired t-test two.sided
conscientiousness -0.086 -1.451 0.147 511 -0.203 0.031 Paired t-test two.sided
neuroticism -0.205 -2.573 0.010 511 -0.362 -0.049 Paired t-test two.sided
openness 0.030 1.064 0.288 511 -0.025 0.085 Paired t-test two.sided
sociability -0.138 -1.437 0.151 511 -0.326 0.050 Paired t-test two.sided
assertiveness -0.121 -1.553 0.121 511 -0.273 0.032 Paired t-test two.sided
energy -0.001 -0.007 0.995 511 -0.176 0.174 Paired t-test two.sided
compassion 0.003 0.083 0.934 511 -0.072 0.078 Paired t-test two.sided
respectfulness -0.032 -0.937 0.349 511 -0.098 0.035 Paired t-test two.sided
trust 0.005 0.097 0.923 511 -0.101 0.112 Paired t-test two.sided
organization -0.095 -1.083 0.279 511 -0.266 0.077 Paired t-test two.sided
productiveness -0.139 -1.506 0.133 511 -0.321 0.043 Paired t-test two.sided
responsibility -0.057 -0.838 0.403 511 -0.190 0.077 Paired t-test two.sided
anxiety -0.380 -2.893 0.004 511 -0.638 -0.122 Paired t-test two.sided
depression -0.130 -1.138 0.256 511 -0.356 0.095 Paired t-test two.sided
volatility -0.163 -1.670 0.095 511 -0.355 0.029 Paired t-test two.sided
curiosity 0.040 0.904 0.366 511 -0.047 0.127 Paired t-test two.sided
aesthetic 0.083 1.791 0.074 511 -0.008 0.175 Paired t-test two.sided
imagination -0.101 -1.670 0.096 511 -0.220 0.018 Paired t-test two.sided
# effect sizes
d_trait_fu <- cohend_cust(paste0(str_trunc(names(b5_vars)[1], 5, ellipsis = ""), "_sqdiff"), 
                       df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(2,3)))
d_traits_unlist_fu <- as_tibble(d_trait_fu$cohen.d)
for (i in 2:length(names(b5_vars))) {
  d_trait_fu <- cohend_cust(paste0(str_trunc(names(b5_vars)[i], 5, ellipsis = ""), "_sqdiff"), 
                         df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(2,3)))
  d_traits_unlist_fu <- bind_rows(d_traits_unlist_fu, as_tibble(d_trait_fu$cohen.d))
}
kable(d_traits_unlist_fu %>% mutate(outcome = names(b5_vars)) %>% select(outcome, everything()), digits = 3)
outcome lower effect upper
extraversion -0.179 -0.060 0.059
agreeableness -0.155 -0.037 0.082
conscientiousness -0.178 -0.059 0.060
neuroticism -0.194 -0.075 0.044
openness -0.086 0.033 0.152
sociability -0.163 -0.044 0.075
assertiveness -0.199 -0.080 0.039
energy -0.119 0.000 0.119
compassion -0.149 -0.030 0.089
respectfulness -0.185 -0.066 0.053
trust -0.116 0.002 0.121
organization -0.173 -0.054 0.065
productiveness -0.175 -0.056 0.063
responsibility -0.156 -0.037 0.082
anxiety -0.217 -0.098 0.021
depression -0.154 -0.035 0.084
volatility -0.180 -0.061 0.058
curiosity -0.107 0.012 0.131
aesthetic -0.043 0.076 0.195
imagination -0.186 -0.067 0.052

No significant further changes in the squared difference from the second to the third measurement occasion (at .001). For neuroticism (and anxiety) further decreases only at p < .01.

6.3.2.3 Summary plot

Traits/facets sorted by average size of squared differences - in the intervention groups from T1 to T2

sqdiff_df_plot <- df_sbsa2 %>% 
  filter(rando!="Waitlist-Control" & time %in% c(1,2)) %>% 
  select(pid, time, all_of(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"))) %>% 
  pivot_longer(-c(pid, time), names_to = "trait", values_to = "sqdiff") %>% 
  group_by(trait) %>% 
  mutate(cur_group_id()) %>% 
  ungroup() %>% 
  filter(!is.na(sqdiff)) %>% 
  mutate(trait2 = fct_recode(trait, !!! setNames(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"),
                                                 str_to_title(names(b5_vars)))),
         trait2 = fct_reorder(trait2, sqdiff, .desc = T))

plot_sqdiff <- ggplot(sqdiff_df_plot) + 
  aes(x = as.factor(time), y = sqdiff) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  ggforce::facet_wrap_paginate(~trait2, ncol=3, nrow=2) +
  labs(x = "Measurement Occasion", y = "Squared difference") + 
  theme_bw()

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 1)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 2)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 3)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 4)

plot_sqdiff + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 5)

For some of the facets, the distribution look very similar and differences over time are perhaps driven by outliers.

Traits/facets sorted by average size of squared differences - in the control group from T1 to T2

sqdiff_df_plot_cg <- df_sbsa2 %>% 
  filter(rando=="Waitlist-Control" & time %in% c(1,2)) %>% 
  select(pid, time, all_of(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"))) %>% 
  pivot_longer(-c(pid, time), names_to = "trait", values_to = "sqdiff") %>% 
  group_by(trait) %>% 
  mutate(cur_group_id()) %>% 
  ungroup() %>% 
  filter(!is.na(sqdiff)) %>% 
  mutate(trait2 = fct_recode(trait, !!! setNames(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"),
                                                 str_to_title(names(b5_vars)))),
         trait2 = fct_reorder(trait2, sqdiff, .desc = T))

plot_sqdiff_cg <- ggplot(sqdiff_df_plot_cg) + 
  aes(x = as.factor(time), y = sqdiff) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  ggforce::facet_wrap_paginate(~trait2, ncol=3, nrow=2) +
  labs(x = "Measurement Occasion", y = "Squared difference") + 
  theme_bw()

plot_sqdiff_cg + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 1)

plot_sqdiff_cg + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 2)

plot_sqdiff_cg + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 3)

plot_sqdiff_cg + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 4)

plot_sqdiff_cg + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 5)

Smaller changes but also quite substantial for some traits/facets (although not significant).

Traits/facets sorted by average size of squared differences - in the intervention groups from T2 to T3

sqdiff_df_plot_fu <- df_sbsa2 %>% 
  filter(rando!="Waitlist-Control" & time %in% c(2,3)) %>% 
  select(pid, time, all_of(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"))) %>% 
  pivot_longer(-c(pid, time), names_to = "trait", values_to = "sqdiff") %>% 
  group_by(trait) %>% 
  mutate(cur_group_id()) %>% 
  ungroup() %>% 
  filter(!is.na(sqdiff)) %>% 
  mutate(trait2 = fct_recode(trait, !!! setNames(paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_sqdiff"),
                                                 str_to_title(names(b5_vars)))),
         trait2 = fct_reorder(trait2, sqdiff, .desc = T))

plot_sqdiff_fu <- ggplot(sqdiff_df_plot_fu) + 
  aes(x = as.factor(time), y = sqdiff) + 
  geom_boxplot() + 
  geom_violin(fill = NA) +
  ggforce::facet_wrap_paginate(~trait2, ncol=3, nrow=2) +
  labs(x = "Measurement Occasion", y = "Squared difference") + 
  theme_bw()

plot_sqdiff_fu + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 1)

plot_sqdiff_fu + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 2)

plot_sqdiff_fu + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 3)

plot_sqdiff_fu + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 4)

plot_sqdiff_fu + ggforce::facet_wrap_paginate(~trait2, ncol=4, nrow=1, page = 5)

No substantial changes over time.


6.4 H4: Change goals and change in personality (current / ideal) in self-improvement group

Not specifically preregistered for study 2 because we were foremost interested in the moderation hypothesis (H6 in prereg / H2 in paper) and thought that it was somewhat redundant with these models of correlations with the change score. I still ran the models for study 2 here (without the control group and for changes between T1 and T2) in case the comparison with study 1 is of interest.

In the self-improvement group, there will be a correlation between change goals and change in current-self ratings but not change in ideal-self ratings.

We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level differences across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.

Reshape and split data set by intervention group:

Show the code
# from T1 to T2
df_sbsa2_wide_pers_sb <- df_sbsa2 %>% 
  filter(rando=="Self-Improvement" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sb07")), # facet-specific change goals
         sb06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with("sb07"), sb06_01)) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb06_01_t2))
# colnames(df_sbsa2_wide_pers_sb)

group_assign <- df_sbsa2 %>% select(pid, rando) %>% unique()

df_sbsa2_wide_pers_sb <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Improvement") %>% select(-rando, -ends_with("_t3")) %>%
  left_join(df_sbsa2_wide_pers_sb)

# follow-up, from T2 to T3 (for later models)
df_sbsa2_wide_pers_sb_fu <- df_sbsa2 %>% 
  filter(rando=="Self-Improvement" & time %in% c(2,3)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sb07")), # facet-specific change goals
         sb06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with("sb07"), sb06_01)) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, sb06_01_t2))
# colnames(df_sbsa2_wide_pers_sb)

df_sbsa2_wide_pers_sb_fu <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Improvement" & !is.na(valid_t2)) %>% select(-rando, -ends_with("_t1")) %>%
  left_join(df_sbsa2_wide_pers_sb_fu)

6.4.1 Big Five traits

6.4.1.1 Extraversion - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_hyp4 <- '
extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

extra_curr_par1_t1 ~~ extra_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_curr_par2_t1 ~~ extra_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_curr_par3_t1 ~~ extra_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1   # This allows residual variance on indicator X2 at T1
extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1   # This allows residual variance on indicator X3 at T1

extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2  # This allows residual variance on indicator X3 at T2

extra_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_extra_curr_hyp4 <- lavaan(mi_lcs_extra_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4616.485 4685.3 0.938 0.109 0.107
# parameters of interest
params_lcs_extra_curr_hyp4 <- broom::tidy(fit_mi_lcs_extra_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                     "d_extra_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                     "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.097 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.541 NA NA
d_extra_1 ~1 0.709 0.437 0.981 2.436 5.114 0.000
extra_t1 ~1 2.989 2.903 3.075 5.066 68.090 0.000
d_extra_1 ~~ d_extra_1 0.070 0.035 0.105 0.826 3.955 0.000
d_extra_1 ~ extra_t1 -0.206 -0.296 -0.116 -0.417 -4.476 0.000
d_extra_1 ~~ sb06_01_t1 -0.026 -0.073 0.021 -0.097 -1.090 0.276
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

The correlation of the general change goal with the extraversion change score (current-self) is not significantly different from zero, r = -0.097, p = 0.276.

6.4.1.2 Extraversion - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_hyp4 <- '
extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

extra_ideal_par1_t1 ~~ extra_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_ideal_par2_t1 ~~ extra_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_ideal_par3_t1 ~~ extra_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

extra_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_extra_ideal_hyp4 <- lavaan(mi_lcs_extra_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4118.071 4186.886 0.993 0.025 0.045
# parameters of interest
params_lcs_extra_ideal_hyp4 <- broom::tidy(fit_mi_lcs_extra_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.976 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.628 NA NA
d_extra_1 ~1 0.652 0.131 1.173 2.720 2.451 0.014
extra_t1 ~1 3.682 3.615 3.749 9.893 107.796 0.000
d_extra_1 ~~ d_extra_1 0.053 0.023 0.083 0.920 3.477 0.001
d_extra_1 ~ extra_t1 -0.182 -0.322 -0.043 -0.283 -2.557 0.011
d_extra_1 ~~ sb06_01_t1 0.002 -0.043 0.047 0.009 0.094 0.925
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with extraversion change score (ideal-self) is not significantly different from zero, r = 0.009, p = 0.925.

6.4.1.3 Extraversion - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_specif_hyp4 <- '
extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

extra_curr_par1_t1 ~~ extra_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_curr_par2_t1 ~~ extra_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_curr_par3_t1 ~~ extra_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1   # This allows residual variance on indicator X2 at T1
extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1   # This allows residual variance on indicator X3 at T1

extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2  # This allows residual variance on indicator X3 at T2

extra_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_01_t1 ~~ sb07_01_t1
sb07_02_t1 ~~ sb07_02_t1
sb07_03_t1 ~~ sb07_03_t1

sb07_01_t1 ~ 1
sb07_02_t1 ~ 1
sb07_03_t1 ~ 1
'
fit_mi_lcs_extra_curr_specif_hyp4 <- lavaan(mi_lcs_extra_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6968.653 7064.229 0.877 0.124 0.144
# parameters of interest
params_lcs_extra_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.120 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.570 NA NA
d_extra_1 ~1 0.782 0.482 1.082 2.626 5.110 0.000
extra_t1 ~1 2.990 2.904 3.076 5.110 68.086 0.000
d_extra_1 ~~ d_extra_1 0.070 0.036 0.105 0.794 4.021 0.000
d_extra_1 ~ extra_t1 -0.231 -0.330 -0.131 -0.454 -4.552 0.000
goals ~~ d_extra_1 -0.046 -0.117 0.025 -0.263 -1.264 0.206
goals ~~ goals 0.431 0.010 0.853 1.000 2.008 0.045

Correlation of specific, facet-level change goals with extraversion change score (current-self) is not significantly different from zero, r = -0.263, p = 0.206.

6.4.1.4 Extraversion - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_specif_hyp4 <- '
extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sb07_01_t1 + sb07_02_t1 + sb07_03_t1 # latent change goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

extra_ideal_par1_t1 ~~ extra_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_ideal_par2_t1 ~~ extra_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_ideal_par3_t1 ~~ extra_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

extra_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_01_t1 ~~ sb07_01_t1
sb07_02_t1 ~~ sb07_02_t1
sb07_03_t1 ~~ sb07_03_t1

sb07_01_t1 ~ 1
sb07_02_t1 ~ 1
sb07_03_t1 ~ 1
'
fit_mi_lcs_extra_ideal_specif_hyp4 <- lavaan(mi_lcs_extra_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6472.111 6567.687 0.995 0.018 0.034
# parameters of interest
params_lcs_extra_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.977 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.631 NA NA
d_extra_1 ~1 0.661 0.149 1.173 2.757 2.530 0.011
extra_t1 ~1 3.682 3.615 3.749 9.909 107.814 0.000
d_extra_1 ~~ d_extra_1 0.053 0.023 0.082 0.918 3.495 0.000
d_extra_1 ~ extra_t1 -0.185 -0.322 -0.048 -0.286 -2.640 0.008
goals ~~ d_extra_1 0.016 -0.022 0.053 0.118 0.812 0.417
goals ~~ goals 0.329 -0.001 0.659 1.000 1.953 0.051

Correlation of specific, facet-level change goals with extraversion change score (ideal-self) is not significantly different from zero, r = 0.118, p = 0.417.

6.4.1.5 Agreeableness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_hyp4 <- '
agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1
agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

agree_curr_par1_t1 ~~ agree_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_curr_par2_t1 ~~ agree_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_curr_par3_t1 ~~ agree_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1   # This allows residual variance on indicator X2 at T1
agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1   # This allows residual variance on indicator X3 at T1

agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2  # This allows residual variance on indicator X3 at T2

agree_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_agree_curr_hyp4 <- lavaan(mi_lcs_agree_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 3951.479 4020.293 0.999 0.011 0.05
# parameters of interest
params_lcs_agree_curr_hyp4 <- broom::tidy(fit_mi_lcs_agree_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                     "d_agree_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                     "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.070 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.530 NA NA
d_agree_1 ~1 0.664 0.296 1.031 3.282 3.541 0.000
agree_t1 ~1 3.463 3.395 3.531 8.480 99.783 0.000
d_agree_1 ~~ d_agree_1 0.035 0.015 0.056 0.859 3.363 0.001
d_agree_1 ~ agree_t1 -0.186 -0.292 -0.080 -0.376 -3.453 0.001
d_agree_1 ~~ sb06_01_t1 0.023 -0.009 0.054 0.118 1.383 0.167
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with agreeableness change score (current-self) is not significantly different from zero, r = 0.118, p = 0.167.

6.4.1.6 Agreeableness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_hyp4 <- '
agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

agree_ideal_par1_t1 ~~ agree_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_ideal_par2_t1 ~~ agree_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_ideal_par3_t1 ~~ agree_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

agree_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_agree_ideal_hyp4 <- lavaan(mi_lcs_agree_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 3955.753 4024.568 0.992 0.031 0.029
# parameters of interest
params_lcs_agree_ideal_hyp4 <- broom::tidy(fit_mi_lcs_agree_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.054 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.646 NA NA
d_agree_1 ~1 0.866 0.440 1.292 3.192 3.985 0.000
agree_t1 ~1 3.769 3.700 3.839 8.516 106.115 0.000
d_agree_1 ~~ d_agree_1 0.063 0.036 0.090 0.850 4.544 0.000
d_agree_1 ~ agree_t1 -0.238 -0.349 -0.127 -0.388 -4.213 0.000
d_agree_1 ~~ sb06_01_t1 0.009 -0.030 0.048 0.034 0.438 0.662
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with agreeableness change score (ideal-self) is not significantly different from zero, r = 0.034, p = 0.662.

6.4.1.7 Agreeableness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_specif_hyp4 <- '
agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1
agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

agree_curr_par1_t1 ~~ agree_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_curr_par2_t1 ~~ agree_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_curr_par3_t1 ~~ agree_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1   # This allows residual variance on indicator X2 at T1
agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1   # This allows residual variance on indicator X3 at T1

agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2  # This allows residual variance on indicator X3 at T2

agree_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_04_t1 ~~ sb07_04_t1
sb07_05_t1 ~~ sb07_05_t1
sb07_06_t1 ~~ sb07_06_t1

sb07_04_t1 ~ 1
sb07_05_t1 ~ 1
sb07_06_t1 ~ 1
'
fit_mi_lcs_agree_curr_specif_hyp4 <- lavaan(mi_lcs_agree_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6266.535 6362.111 0.976 0.048 0.082
# parameters of interest
params_lcs_agree_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.083 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.549 NA NA
d_agree_1 ~1 0.720 0.343 1.097 3.472 3.741 0.000
agree_t1 ~1 3.463 3.395 3.531 8.462 99.734 0.000
d_agree_1 ~~ d_agree_1 0.036 0.016 0.057 0.841 3.474 0.001
d_agree_1 ~ agree_t1 -0.202 -0.311 -0.093 -0.399 -3.648 0.000
goals ~~ d_agree_1 -0.014 -0.051 0.023 -0.078 -0.728 0.467
goals ~~ goals 0.861 0.566 1.156 1.000 5.722 0.000

Correlation of specific, facet-level change goals with agreeableness change score (current-self) is not significantly different from zero, r = -0.078, p = 0.467.

6.4.1.8 Agreeableness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_specif_hyp4 <- '
agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sb07_04_t1 + sb07_05_t1 + sb07_06_t1 # latent change goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

agree_ideal_par1_t1 ~~ agree_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_ideal_par2_t1 ~~ agree_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_ideal_par3_t1 ~~ agree_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

agree_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_04_t1 ~~ sb07_04_t1
sb07_05_t1 ~~ sb07_05_t1
sb07_06_t1 ~~ sb07_06_t1

sb07_04_t1 ~ 1
sb07_05_t1 ~ 1
sb07_06_t1 ~ 1
'
fit_mi_lcs_agree_ideal_specif_hyp4 <- lavaan(mi_lcs_agree_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6269.691 6365.267 0.977 0.048 0.058
# parameters of interest
params_lcs_agree_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.055 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.647 NA NA
d_agree_1 ~1 0.869 0.441 1.298 3.201 3.975 0.00
agree_t1 ~1 3.769 3.700 3.839 8.518 106.129 0.00
d_agree_1 ~~ d_agree_1 0.063 0.036 0.090 0.849 4.533 0.00
d_agree_1 ~ agree_t1 -0.239 -0.350 -0.127 -0.389 -4.197 0.00
goals ~~ d_agree_1 -0.004 -0.051 0.044 -0.016 -0.150 0.88
goals ~~ goals 0.866 0.570 1.162 1.000 5.738 0.00

Correlation of specific, facet-level change goals with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.016, p = 0.88.

6.4.1.9 Conscientiousness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_hyp4 <- '
consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

consc_curr_par1_t1 ~~ consc_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_curr_par2_t1 ~~ consc_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_curr_par3_t1 ~~ consc_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1   # This allows residual variance on indicator X2 at T1
consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1   # This allows residual variance on indicator X3 at T1

consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2  # This allows residual variance on indicator X3 at T2

consc_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_consc_curr_hyp4 <- lavaan(mi_lcs_consc_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4212.613 4281.428 0.993 0.043 0.059
# parameters of interest
params_lcs_consc_curr_hyp4 <- broom::tidy(fit_mi_lcs_consc_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                     "d_consc_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                     "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.991 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.529 NA NA
d_consc_1 ~1 0.553 0.220 0.885 1.349 3.260 0.001
consc_t1 ~1 3.378 3.287 3.469 4.396 72.808 0.000
d_consc_1 ~~ d_consc_1 0.157 0.081 0.234 0.938 4.015 0.000
d_consc_1 ~ consc_t1 -0.133 -0.231 -0.036 -0.250 -2.673 0.008
d_consc_1 ~~ sb06_01_t1 0.022 -0.048 0.092 0.055 0.619 0.536
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with conscientiousness change score (current-self) is not significantly different from zero, r = 0.055, p = 0.536.

6.4.1.10 Conscientiousness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_hyp4 <- '
consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1
consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

consc_ideal_par1_t1 ~~ consc_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_ideal_par2_t1 ~~ consc_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_ideal_par3_t1 ~~ consc_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

consc_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_consc_ideal_hyp4 <- lavaan(mi_lcs_consc_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 3574.92 3643.735 0.989 0.038 0.043
# parameters of interest
params_lcs_consc_ideal_hyp4 <- broom::tidy(fit_mi_lcs_consc_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.937 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.625 NA NA
d_consc_1 ~1 0.668 -0.029 1.365 2.520 1.878 0.060
consc_t1 ~1 4.319 4.257 4.382 10.868 135.542 0.000
d_consc_1 ~~ d_consc_1 0.067 0.039 0.094 0.948 4.700 0.000
d_consc_1 ~ consc_t1 -0.153 -0.310 0.005 -0.229 -1.903 0.057
d_consc_1 ~~ sb06_01_t1 0.011 -0.030 0.053 0.044 0.538 0.590
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with conscientiousness change score (ideal-self) is not significantly different from zero, r = 0.044, p = 0.59.

6.4.1.11 Conscientiousness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_specif_hyp4 <- '
consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

consc_curr_par1_t1 ~~ consc_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_curr_par2_t1 ~~ consc_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_curr_par3_t1 ~~ consc_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1   # This allows residual variance on indicator X2 at T1
consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1   # This allows residual variance on indicator X3 at T1

consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2  # This allows residual variance on indicator X3 at T2

consc_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_07_t1 ~~ sb07_07_t1
sb07_08_t1 ~~ sb07_08_t1
sb07_09_t1 ~~ sb07_09_t1

sb07_07_t1 ~ 1
sb07_08_t1 ~ 1
sb07_09_t1 ~ 1
'
fit_mi_lcs_consc_curr_specif_hyp4 <- lavaan(mi_lcs_consc_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6503.589 6599.165 0.918 0.133 0.239
# parameters of interest
params_lcs_consc_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.052 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.596 NA NA
d_consc_1 ~1 0.810 0.422 1.199 1.859 4.086 0.000
consc_t1 ~1 3.378 3.287 3.469 4.392 72.805 0.000
d_consc_1 ~~ d_consc_1 0.164 0.085 0.243 0.864 4.078 0.000
d_consc_1 ~ consc_t1 -0.209 -0.324 -0.093 -0.368 -3.545 0.000
goals ~~ d_consc_1 -0.108 -0.197 -0.018 -0.230 -2.365 0.018
goals ~~ goals 1.341 1.034 1.648 1.000 8.555 0.000

Correlation of specific, facet-level change goals with conscientiousness change score (current-self) is significantly different from zero, r = -0.23, p = 0.018.

6.4.1.12 Conscientiousness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_specif_hyp4 <- '
consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1
consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sb07_07_t1 + sb07_08_t1 + sb07_09_t1 # latent change goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

consc_ideal_par1_t1 ~~ consc_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_ideal_par2_t1 ~~ consc_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_ideal_par3_t1 ~~ consc_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

consc_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_07_t1 ~~ sb07_07_t1
sb07_08_t1 ~~ sb07_08_t1
sb07_09_t1 ~~ sb07_09_t1

sb07_07_t1 ~ 1
sb07_08_t1 ~ 1
sb07_09_t1 ~ 1
'
fit_mi_lcs_consc_ideal_specif_hyp4 <- lavaan(mi_lcs_consc_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 5869.922 5965.498 0.999 0.008 0.031
# parameters of interest
params_lcs_consc_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.934 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.620 NA NA
d_consc_1 ~1 0.645 -0.052 1.343 2.435 1.813 0.070
consc_t1 ~1 4.319 4.257 4.382 10.815 135.500 0.000
d_consc_1 ~~ d_consc_1 0.067 0.039 0.095 0.951 4.695 0.000
d_consc_1 ~ consc_t1 -0.147 -0.304 0.010 -0.222 -1.837 0.066
goals ~~ d_consc_1 -0.035 -0.089 0.019 -0.116 -1.255 0.209
goals ~~ goals 1.336 1.027 1.646 1.000 8.452 0.000

Correlation of specific, facet-level change goals with conscientiousness change score (ideal-self) is not significantly different from zero, r = -0.116, p = 0.209.

6.4.1.13 Neuroticism - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_hyp4 <- '
neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

neuro_curr_par1_t1 ~~ neuro_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_curr_par2_t1 ~~ neuro_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_curr_par3_t1 ~~ neuro_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_neuro_curr_hyp4 <- lavaan(mi_lcs_neuro_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4449.298 4518.113 0.969 0.094 0.13
# parameters of interest
params_lcs_neuro_curr_hyp4 <- broom::tidy(fit_mi_lcs_neuro_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                     "d_neuro_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                     "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.069 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.586 NA NA
d_neuro_1 ~1 0.516 0.241 0.792 1.122 3.673 0.000
neuro_t1 ~1 3.276 3.179 3.372 3.898 66.630 0.000
d_neuro_1 ~~ d_neuro_1 0.180 0.135 0.224 0.849 7.926 0.000
d_neuro_1 ~ neuro_t1 -0.213 -0.298 -0.127 -0.388 -4.891 0.000
d_neuro_1 ~~ sb06_01_t1 -0.004 -0.073 0.064 -0.010 -0.123 0.902
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with neuroticism change score (current-self) is not significantly different from zero, r = -0.01, p = 0.902.

6.4.1.14 Neuroticism - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_hyp4 <- '
neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_hyp4 <- lavaan(mi_lcs_neuro_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 3587.547 3656.362 1 0.007 0.039
# parameters of interest
params_lcs_neuro_ideal_hyp4 <- broom::tidy(fit_mi_lcs_neuro_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.949 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.765 NA NA
d_neuro_1 ~1 0.502 0.201 0.804 1.368 3.266 0.001
neuro_t1 ~1 1.707 1.648 1.766 3.747 56.782 0.000
d_neuro_1 ~~ d_neuro_1 0.120 0.078 0.162 0.888 5.572 0.000
d_neuro_1 ~ neuro_t1 -0.270 -0.455 -0.084 -0.334 -2.852 0.004
d_neuro_1 ~~ sb06_01_t1 -0.046 -0.099 0.008 -0.130 -1.665 0.096
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with neuroticism change score (ideal-self) is not significantly different from zero, r = -0.13, p = 0.096.

6.4.1.15 Neuroticism - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_specif_hyp4 <- '
neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

neuro_curr_par1_t1 ~~ neuro_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_curr_par2_t1 ~~ neuro_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_curr_par3_t1 ~~ neuro_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_10_t1 ~~ sb07_10_t1
sb07_11_t1 ~~ sb07_11_t1
sb07_12_t1 ~~ sb07_12_t1

sb07_10_t1 ~ 1
sb07_11_t1 ~ 1
sb07_12_t1 ~ 1
'
fit_mi_lcs_neuro_curr_specif_hyp4 <- lavaan(mi_lcs_neuro_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6888.104 6983.681 0.911 0.138 0.242
# parameters of interest
params_lcs_neuro_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.152 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.690 NA NA
d_neuro_1 ~1 0.813 0.496 1.129 1.616 5.031 0.000
neuro_t1 ~1 3.276 3.179 3.372 3.903 66.640 0.000
d_neuro_1 ~~ d_neuro_1 0.188 0.141 0.236 0.745 7.721 0.000
d_neuro_1 ~ neuro_t1 -0.303 -0.400 -0.205 -0.505 -6.106 0.000
goals ~~ d_neuro_1 0.135 0.048 0.222 0.287 3.053 0.002
goals ~~ goals 1.176 0.842 1.511 1.000 6.896 0.000

The correlation of specific, facet-level change goals with neuroticism change score (current-self) is significantly different from zero, r = 0.287, p = 0.002.

6.4.1.16 Neuroticism - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_specif_hyp4 <- '
neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sb07_10_t1 + sb07_11_t1 + sb07_12_t1 # latent change goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_10_t1 ~~ sb07_10_t1
sb07_11_t1 ~~ sb07_11_t1
sb07_12_t1 ~~ sb07_12_t1

sb07_10_t1 ~ 1
sb07_11_t1 ~ 1
sb07_12_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_specif_hyp4 <- lavaan(mi_lcs_neuro_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6038.494 6134.07 0.995 0.023 0.048
# parameters of interest
params_lcs_neuro_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.939 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.749 NA NA
d_neuro_1 ~1 0.470 0.174 0.767 1.294 3.108 0.002
neuro_t1 ~1 1.707 1.648 1.766 3.746 56.787 0.000
d_neuro_1 ~~ d_neuro_1 0.119 0.077 0.161 0.901 5.567 0.000
d_neuro_1 ~ neuro_t1 -0.251 -0.433 -0.068 -0.314 -2.691 0.007
goals ~~ d_neuro_1 0.027 -0.036 0.090 0.071 0.847 0.397
goals ~~ goals 1.227 0.894 1.559 1.000 7.233 0.000

Correlation of specific, facet-level change goals with neuroticism change score (ideal-self) is not significantly different from zero, r = 0.071, p = 0.397.

6.4.1.17 Openness - current-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_hyp4 <- '
openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1
openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

openn_curr_par1_t1 ~~ openn_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_curr_par2_t1 ~~ openn_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_curr_par3_t1 ~~ openn_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1   # This allows residual variance on indicator X2 at T1
openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1   # This allows residual variance on indicator X3 at T1

openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2  # This allows residual variance on indicator X3 at T2

openn_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_openn_curr_hyp4 <- lavaan(mi_lcs_openn_curr_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4166.092 4234.907 0.991 0.04 0.039
# parameters of interest
params_lcs_openn_curr_hyp4 <- broom::tidy(fit_mi_lcs_openn_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                     "d_openn_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                     "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 0.999 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.457 NA NA
d_openn_1 ~1 0.438 0.105 0.770 1.647 2.577 0.010
openn_t1 ~1 3.485 3.410 3.561 6.002 90.551 0.000
d_openn_1 ~~ d_openn_1 0.067 0.037 0.097 0.949 4.382 0.000
d_openn_1 ~ openn_t1 -0.103 -0.196 -0.011 -0.226 -2.182 0.029
d_openn_1 ~~ sb06_01_t1 -0.016 -0.061 0.029 -0.060 -0.692 0.489
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with openness change score (current-self) is not significantly different from zero, r = -0.06, p = 0.489.

6.4.1.18 Openness - ideal-self: general change goals

Fit model:

Show the code
# adding correlation with manifest change goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_hyp4 <- '
openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sb06_01_t1     # estimates the covariance/correlation with change goal variable

openn_ideal_par1_t1 ~~ openn_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_ideal_par2_t1 ~~ openn_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_ideal_par3_t1 ~~ openn_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

openn_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb06_01_t1 ~~ sb06_01_t1
sb06_01_t1 ~ 1
'
fit_mi_lcs_openn_ideal_hyp4 <- lavaan(mi_lcs_openn_ideal_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_ideal_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 18 4025.404 4094.219 0.985 0.042 0.039
# parameters of interest
params_lcs_openn_ideal_hyp4 <- broom::tidy(fit_mi_lcs_openn_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.027 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.517 NA NA
d_openn_1 ~1 0.614 0.125 1.102 4.142 2.461 0.014
openn_t1 ~1 3.917 3.856 3.979 13.318 125.051 0.000
d_openn_1 ~~ d_openn_1 0.020 0.007 0.033 0.908 3.081 0.002
d_openn_1 ~ openn_t1 -0.153 -0.274 -0.031 -0.303 -2.457 0.014
d_openn_1 ~~ sb06_01_t1 0.003 -0.023 0.028 0.018 0.197 0.844
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with openness change score (ideal-self) is not significantly different from zero, r = 0.018, p = 0.844.

6.4.1.19 Openness - current-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_specif_hyp4 <- '
openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1
openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

openn_curr_par1_t1 ~~ openn_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_curr_par2_t1 ~~ openn_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_curr_par3_t1 ~~ openn_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1   # This allows residual variance on indicator X2 at T1
openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1   # This allows residual variance on indicator X3 at T1

openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2  # This allows residual variance on indicator X3 at T2

openn_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_13_t1 ~~ sb07_13_t1
sb07_14_t1 ~~ sb07_14_t1
sb07_15_t1 ~~ sb07_15_t1

sb07_13_t1 ~ 1
sb07_14_t1 ~ 1
sb07_15_t1 ~ 1
'
fit_mi_lcs_openn_curr_specif_hyp4 <- lavaan(mi_lcs_openn_curr_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6309.866 6405.443 0.965 0.073 0.116
# parameters of interest
params_lcs_openn_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.009 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.468 NA NA
d_openn_1 ~1 0.486 0.139 0.833 1.806 2.743 0.006
openn_t1 ~1 3.485 3.410 3.561 6.009 90.613 0.000
d_openn_1 ~~ d_openn_1 0.068 0.038 0.098 0.936 4.438 0.000
d_openn_1 ~ openn_t1 -0.117 -0.214 -0.020 -0.252 -2.364 0.018
goals ~~ d_openn_1 -0.028 -0.067 0.011 -0.134 -1.392 0.164
goals ~~ goals 0.628 0.416 0.840 1.000 5.801 0.000

The correlation of specific, facet-level change goals with openness change score (current-self) is not significantly different from zero, r = -0.134, p = 0.164.

6.4.1.20 Openness - ideal-self: specific, facet-level change goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) change goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_specif_hyp4 <- '
openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sb07_13_t1 + sb07_14_t1 + sb07_15_t1 # latent change goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) change goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) change goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) change goal variable

openn_ideal_par1_t1 ~~ openn_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_ideal_par2_t1 ~~ openn_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_ideal_par3_t1 ~~ openn_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

openn_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb07_13_t1 ~~ sb07_13_t1
sb07_14_t1 ~~ sb07_14_t1
sb07_15_t1 ~~ sb07_15_t1

sb07_13_t1 ~ 1
sb07_14_t1 ~ 1
sb07_15_t1 ~ 1
'
fit_mi_lcs_openn_ideal_specif_hyp4 <- lavaan(mi_lcs_openn_ideal_specif_hyp4, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_ideal_specif_hyp4, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 25 6170.616 6266.192 0.977 0.051 0.06
# parameters of interest
params_lcs_openn_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.027 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.517 NA NA
d_openn_1 ~1 0.614 0.128 1.100 4.147 2.474 0.013
openn_t1 ~1 3.917 3.856 3.979 13.331 125.069 0.000
d_openn_1 ~~ d_openn_1 0.020 0.007 0.032 0.908 3.088 0.002
d_openn_1 ~ openn_t1 -0.153 -0.274 -0.031 -0.303 -2.468 0.014
goals ~~ d_openn_1 -0.002 -0.025 0.021 -0.018 -0.177 0.860
goals ~~ goals 0.629 0.417 0.842 1.000 5.810 0.000

Correlation of specific, facet-level change goals with openness change score (ideal-self) is not significantly different from zero, r = -0.018, p = 0.86.

6.4.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create template:
facet_template <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1       # This estimates the variance of facet_t1 
d_facet_1 ~ facet_t1       # This estimates the self-feedback parameter

d_facet_1 ~~ ind_goal     # estimates the covariance/correlation with change goal variable

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # loop across 2 BFI versions (combined pre&post current/ideal)
  for (j in 5:length(bfi_versions)) {
    items = paste0(bfi_versions[[j]], item_nrs)
    # loop across 2 different goal operationalizations (sb06_01_t1 & sb07_XX_t1)
    for (k in 1:2) {
      if (k==1) {
        goal_op = "sb06_01_t1"
      } else{
        goal_op = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
      }
      template_filled <- str_replace_all(facet_template, 
                                         c("facet" = short_name,
                                           "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                           "ind_goal" = goal_op))
      facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb, estimator='mlr', fixed.x=FALSE, missing='fiml')
      # save to environment
      if (k==1) {
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp4")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp4")), facet_model_fit))
      } else{
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp4")), facet_model_fit))
      }
    }
  }
}  
6.4.2.1 Sociability - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7959.374 8043.481 0.912 0.1 0.094
# parameters of interest
params_lcs_socia_curr_hyp4 <- broom::tidy(fit_mi_lcs_socia_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.091 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.515 NA NA
d_socia_1 ~1 0.624 0.368 0.881 1.616 4.770 0.000
socia_t1 ~1 2.875 2.747 3.003 3.514 44.013 0.000
d_socia_1 ~~ d_socia_1 0.125 0.063 0.186 0.836 3.980 0.000
d_socia_1 ~ socia_t1 -0.191 -0.283 -0.100 -0.405 -4.113 0.000
d_socia_1 ~~ sb06_01_t1 -0.026 -0.088 0.037 -0.071 -0.796 0.426
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

The correlation of the general change goal with the sociability change score (current-self) is significantly different from zero, r = -0.071, p = 0.426.

6.4.2.2 Sociability - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7791.993 7876.1 0.935 0.053 0.056
# parameters of interest
params_lcs_socia_ideal_hyp4 <- broom::tidy(fit_mi_lcs_socia_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.993 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.650 NA NA
d_socia_1 ~1 0.846 0.070 1.621 3.113 2.138 0.033
socia_t1 ~1 4.241 4.158 4.324 10.208 100.432 0.000
d_socia_1 ~~ d_socia_1 0.066 0.013 0.120 0.900 2.441 0.015
d_socia_1 ~ socia_t1 -0.207 -0.387 -0.027 -0.317 -2.249 0.025
d_socia_1 ~~ sb06_01_t1 0.042 -0.012 0.096 0.162 1.531 0.126
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with sociability change score (ideal-self) is not significantly different from zero, r = 0.162, p = 0.126.

6.4.2.3 Sociability - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8102.304 8186.411 0.885 0.117 0.13
# parameters of interest
params_lcs_socia_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.127 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.561 NA NA
d_socia_1 ~1 0.736 0.450 1.022 1.813 5.048 0.000
socia_t1 ~1 2.876 2.748 3.004 3.526 44.021 0.000
d_socia_1 ~~ d_socia_1 0.130 0.066 0.193 0.786 3.989 0.000
d_socia_1 ~ socia_t1 -0.230 -0.330 -0.130 -0.462 -4.506 0.000
d_socia_1 ~~ sb07_01_t1 -0.104 -0.200 -0.008 -0.229 -2.128 0.033
sb07_01_t1 ~~ sb07_01_t1 1.597 1.400 1.794 1.000 15.899 0.000

Correlation of specific, facet-level change goals with sociability change score (current-self) is significantly different from zero, r = -0.229, p = 0.033.

6.4.2.4 Sociability - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7941.183 8025.29 0.947 0.047 0.056
# parameters of interest
params_lcs_socia_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", # change goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.975 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.613 NA NA
d_socia_1 ~1 0.696 -0.062 1.454 2.628 1.799 0.072
socia_t1 ~1 4.241 4.158 4.323 10.068 100.472 0.000
d_socia_1 ~~ d_socia_1 0.065 0.011 0.119 0.926 2.368 0.018
d_socia_1 ~ socia_t1 -0.171 -0.347 0.005 -0.273 -1.908 0.056
d_socia_1 ~~ sb07_01_t1 -0.042 -0.110 0.025 -0.131 -1.224 0.221
sb07_01_t1 ~~ sb07_01_t1 1.597 1.400 1.794 1.000 15.899 0.000

The correlation of specific, facet-level change goals with the anxiety change score (ideal-self) is not significantly different from zero, r = -0.131, p = 0.221.

6.4.2.5 Assertiveness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8179.331 8263.438 0.959 0.061 0.064
# parameters of interest
params_lcs_asser_curr_hyp4 <- broom::tidy(fit_mi_lcs_asser_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 1.035 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.492 NA NA
d_asser_1 ~1 0.511 0.221 0.802 1.865 3.454 0.001
asser_t1 ~1 3.093 2.973 3.213 5.362 50.389 0.000
d_asser_1 ~~ d_asser_1 0.068 0.016 0.120 0.906 2.550 0.011
d_asser_1 ~ asser_t1 -0.146 -0.239 -0.052 -0.307 -3.051 0.002
d_asser_1 ~~ sb06_01_t1 -0.019 -0.064 0.025 -0.073 -0.848 0.397
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with assertiveness change score (current-self) is not significantly different from zero, r = -0.073, p = 0.397.

6.4.2.6 Assertiveness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7876.725 7960.832 0.947 0.047 0.048
# parameters of interest
params_lcs_asser_ideal_hyp4 <- broom::tidy(fit_mi_lcs_asser_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.971 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.623 NA NA
d_asser_1 ~1 0.723 -0.143 1.588 3.648 1.636 0.102
asser_t1 ~1 4.145 4.064 4.226 13.421 100.252 0.000
d_asser_1 ~~ d_asser_1 0.036 -0.006 0.079 0.925 1.682 0.093
d_asser_1 ~ asser_t1 -0.175 -0.382 0.031 -0.274 -1.663 0.096
d_asser_1 ~~ sb06_01_t1 -0.014 -0.056 0.029 -0.070 -0.629 0.530
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with assertiveness change score (ideal-self) is not significantly different from zero, r = -0.07, p = 0.53.

6.4.2.7 Assertiveness - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8341.572 8425.679 0.925 0.084 0.088
# parameters of interest
params_lcs_asser_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 1.046 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.502 NA NA
d_asser_1 ~1 0.550 0.260 0.839 1.985 3.721 0.000
asser_t1 ~1 3.093 2.973 3.213 5.363 50.407 0.000
d_asser_1 ~~ d_asser_1 0.068 0.016 0.121 0.891 2.558 0.011
d_asser_1 ~ asser_t1 -0.158 -0.252 -0.065 -0.330 -3.330 0.001
d_asser_1 ~~ sb07_02_t1 -0.068 -0.130 -0.006 -0.200 -2.134 0.033
sb07_02_t1 ~~ sb07_02_t1 1.688 1.496 1.881 1.000 17.182 0.000

Correlation of specific, facet-level change goals with assertiveness change score (current-self) is significantly different from zero, r = -0.2, p = 0.033.

6.4.2.8 Assertiveness - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8043.873 8127.98 0.948 0.046 0.048
# parameters of interest
params_lcs_asser_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", # change goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.975 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.630 NA NA
d_asser_1 ~1 0.752 -0.134 1.638 3.819 1.664 0.096
asser_t1 ~1 4.145 4.064 4.226 13.610 100.283 0.000
d_asser_1 ~~ d_asser_1 0.036 -0.006 0.077 0.920 1.691 0.091
d_asser_1 ~ asser_t1 -0.183 -0.395 0.029 -0.282 -1.688 0.091
d_asser_1 ~~ sb07_02_t1 0.010 -0.038 0.058 0.041 0.405 0.686
sb07_02_t1 ~~ sb07_02_t1 1.688 1.496 1.881 1.000 17.182 0.000

Correlation of specific, facet-level change goals with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.041, p = 0.686.

6.4.2.9 Energy - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8355.963 8440.07 0.958 0.055 0.071
# parameters of interest
params_lcs_energ_curr_hyp4 <- broom::tidy(fit_mi_lcs_energ_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.087 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.502 NA NA
d_energ_1 ~1 0.453 0.152 0.755 2.944 2.946 0.003
energ_t1 ~1 2.770 2.662 2.878 8.314 50.244 0.000
d_energ_1 ~~ d_energ_1 0.020 -0.001 0.041 0.842 1.864 0.062
d_energ_1 ~ energ_t1 -0.184 -0.292 -0.075 -0.398 -3.311 0.001
d_energ_1 ~~ sb06_01_t1 0.016 -0.016 0.048 0.112 0.976 0.329
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with energy change score (current-self) is not significantly different from zero, r = 0.112, p = 0.329.

6.4.2.10 Energy - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7752.633 7836.74 0.93 0.045 0.05
# parameters of interest
params_lcs_energ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_energ_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 0.804 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.565 NA NA
d_energ_1 ~1 -0.020 -0.706 0.667 -0.160 -0.056 0.955
energ_t1 ~1 2.242 2.124 2.360 12.835 37.328 0.000
d_energ_1 ~~ d_energ_1 0.015 -0.007 0.037 0.999 1.340 0.180
d_energ_1 ~ energ_t1 0.026 -0.286 0.339 0.037 0.164 0.869
d_energ_1 ~~ sb06_01_t1 0.000 -0.030 0.031 0.001 0.008 0.993
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with energy change score (ideal-self) is not significantly different from zero, r = 0.001, p = 0.993.

6.4.2.11 Energy - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8500.009 8584.116 0.89 0.091 0.104
# parameters of interest
params_lcs_energ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.076 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.485 NA NA
d_energ_1 ~1 0.414 0.097 0.731 2.749 2.561 0.010
energ_t1 ~1 2.770 2.662 2.878 8.288 50.228 0.000
d_energ_1 ~~ d_energ_1 0.019 -0.001 0.040 0.859 1.848 0.065
d_energ_1 ~ energ_t1 -0.170 -0.283 -0.057 -0.376 -2.943 0.003
d_energ_1 ~~ sb07_03_t1 -0.001 -0.037 0.034 -0.008 -0.074 0.941
sb07_03_t1 ~~ sb07_03_t1 1.572 1.373 1.770 1.000 15.550 0.000

Correlation of specific, facet-level change goals with energy change score (current-self) is not significantly different from zero, r = -0.008, p = 0.941.

6.4.2.12 Energy - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7895.287 7979.394 0.939 0.042 0.05
# parameters of interest
params_lcs_energ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", # change goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 0.804 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.564 NA NA
d_energ_1 ~1 -0.024 -0.720 0.672 -0.196 -0.068 0.946
energ_t1 ~1 2.242 2.124 2.360 12.830 37.323 0.000
d_energ_1 ~~ d_energ_1 0.015 -0.007 0.037 0.998 1.338 0.181
d_energ_1 ~ energ_t1 0.028 -0.289 0.345 0.040 0.175 0.861
d_energ_1 ~~ sb07_03_t1 0.003 -0.030 0.035 0.016 0.153 0.879
sb07_03_t1 ~~ sb07_03_t1 1.572 1.373 1.770 1.000 15.550 0.000

Correlation of specific, facet-level change goals with energy change score (ideal-self) is not significantly different from zero, r = 0.016, p = 0.879.

6.4.2.13 Compassion - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8081.935 8166.042 0.965 0.044 0.049
# parameters of interest
params_lcs_compa_curr_hyp4 <- broom::tidy(fit_mi_lcs_compa_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.127 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.455 NA NA
d_compa_1 ~1 0.886 0.412 1.360 3.640 3.661 0.000
compa_t1 ~1 4.184 4.090 4.277 6.940 87.951 0.000
d_compa_1 ~~ d_compa_1 0.046 0.001 0.092 0.784 2.004 0.045
d_compa_1 ~ compa_t1 -0.188 -0.297 -0.079 -0.465 -3.380 0.001
d_compa_1 ~~ sb06_01_t1 0.027 -0.025 0.079 0.123 1.014 0.311
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with compassion change score (current-self) is not significantly different from zero, r = 0.123, p = 0.311.

6.4.2.14 Compassion - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8200.707 8284.814 0.983 0.024 0.048
# parameters of interest
params_lcs_compa_ideal_hyp4 <- broom::tidy(fit_mi_lcs_compa_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.979 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.427 NA NA
d_compa_1 ~1 0.269 -0.757 1.295 1.204 0.514 0.607
compa_t1 ~1 4.225 4.132 4.319 8.252 88.493 0.000
d_compa_1 ~~ d_compa_1 0.049 -0.027 0.124 0.972 1.262 0.207
d_compa_1 ~ compa_t1 -0.073 -0.310 0.163 -0.168 -0.608 0.543
d_compa_1 ~~ sb06_01_t1 -0.030 -0.087 0.028 -0.133 -1.012 0.312
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with compassion change score (ideal-self) is not significantly different from zero, r = -0.133, p = 0.312.

6.4.2.15 Compassion - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8279.231 8363.338 0.925 0.067 0.079
# parameters of interest
params_lcs_compa_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.136 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.468 NA NA
d_compa_1 ~1 0.926 0.444 1.407 3.762 3.769 0.000
compa_t1 ~1 4.184 4.091 4.277 7.011 88.158 0.000
d_compa_1 ~~ d_compa_1 0.047 0.003 0.091 0.770 2.074 0.038
d_compa_1 ~ compa_t1 -0.198 -0.309 -0.086 -0.479 -3.473 0.001
d_compa_1 ~~ sb07_04_t1 -0.010 -0.087 0.066 -0.035 -0.264 0.792
sb07_04_t1 ~~ sb07_04_t1 1.843 1.662 2.024 1.000 19.987 0.000

Correlation of specific, facet-level change goals with compassion change score (current-self) is not significantly different from zero, r = -0.035, p = 0.792.

6.4.2.16 Compassion - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8397.825 8481.932 0.914 0.055 0.067
# parameters of interest
params_lcs_compa_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", # change goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.976 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.423 NA NA
d_compa_1 ~1 0.253 -0.769 1.274 1.132 0.485 0.628
compa_t1 ~1 4.225 4.132 4.319 8.211 88.429 0.000
d_compa_1 ~~ d_compa_1 0.049 -0.028 0.125 0.974 1.245 0.213
d_compa_1 ~ compa_t1 -0.070 -0.305 0.166 -0.160 -0.579 0.563
d_compa_1 ~~ sb07_04_t1 0.018 -0.070 0.107 0.061 0.403 0.687
sb07_04_t1 ~~ sb07_04_t1 1.843 1.662 2.024 1.000 19.987 0.000

Correlation of specific, facet-level change goals with compassion change score (ideal-self) is not significantly different from zero, r = 0.061, p = 0.687.

6.4.2.17 Respectfulness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7006.72 7090.827 0.949 0.063 0.066
# parameters of interest
params_lcs_respe_curr_hyp4 <- broom::tidy(fit_mi_lcs_respe_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.165 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.638 NA NA
d_respe_1 ~1 1.277 0.632 1.923 4.128 3.880 0.000
respe_t1 ~1 4.474 4.396 4.552 7.919 111.900 0.000
d_respe_1 ~~ d_respe_1 0.070 0.030 0.111 0.736 3.421 0.001
d_respe_1 ~ respe_t1 -0.282 -0.422 -0.141 -0.514 -3.930 0.000
d_respe_1 ~~ sb06_01_t1 0.000 -0.051 0.052 0.001 0.013 0.990
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with respectfulness change score (current-self) is not significantly different from zero, r = 0.001, p = 0.99.

6.4.2.18 Respectfulness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 6614.559 6698.666 0.964 0.042 0.046
# parameters of interest
params_lcs_respe_ideal_hyp4 <- broom::tidy(fit_mi_lcs_respe_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.105 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.674 NA NA
d_respe_1 ~1 1.301 0.526 2.077 5.450 3.288 0.001
respe_t1 ~1 4.710 4.650 4.770 12.020 153.576 0.000
d_respe_1 ~~ d_respe_1 0.045 0.015 0.076 0.794 2.938 0.003
d_respe_1 ~ respe_t1 -0.277 -0.437 -0.116 -0.454 -3.384 0.001
d_respe_1 ~~ sb06_01_t1 0.009 -0.037 0.055 0.040 0.367 0.714
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with respectfulness change score (ideal-self) is not significantly different from zero, r = 0.04, p = 0.714.

6.4.2.19 Respectfulness - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7196.438 7280.545 0.905 0.088 0.102
# parameters of interest
params_lcs_respe_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.198 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.684 NA NA
d_respe_1 ~1 1.428 0.766 2.090 4.419 4.229 0.000
respe_t1 ~1 4.474 4.396 4.552 7.905 111.873 0.000
d_respe_1 ~~ d_respe_1 0.073 0.032 0.113 0.696 3.543 0.000
d_respe_1 ~ respe_t1 -0.315 -0.459 -0.170 -0.551 -4.272 0.000
d_respe_1 ~~ sb07_05_t1 -0.066 -0.133 0.002 -0.180 -1.915 0.056
sb07_05_t1 ~~ sb07_05_t1 1.826 1.607 2.046 1.000 16.296 0.000

Correlation of specific, facet-level change goals with respectfulness change score (current-self) is not significantly different from zero, r = -0.18, p = 0.056.

6.4.2.20 Respectfulness - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 6805.018 6889.125 0.961 0.044 0.052
# parameters of interest
params_lcs_respe_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", # change goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.116 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.695 NA NA
d_respe_1 ~1 1.376 0.612 2.140 5.662 3.531 0.000
respe_t1 ~1 4.710 4.650 4.770 12.065 153.595 0.000
d_respe_1 ~~ d_respe_1 0.046 0.016 0.076 0.780 3.017 0.003
d_respe_1 ~ respe_t1 -0.292 -0.450 -0.134 -0.469 -3.625 0.000
d_respe_1 ~~ sb07_05_t1 -0.050 -0.111 0.011 -0.171 -1.591 0.112
sb07_05_t1 ~~ sb07_05_t1 1.826 1.607 2.046 1.000 16.296 0.000

The correlation of specific, facet-level change goals with the respectfulness change score (ideal-self) is not significantly different from zero, r = -0.171, p = 0.112.

6.4.2.21 Trust - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8342.903 8427.01 0.927 0.071 0.078
# parameters of interest
params_lcs_trust_curr_hyp4 <- broom::tidy(fit_mi_lcs_trust_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.065 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.490 NA NA
d_trust_1 ~1 0.372 0.040 0.705 1.265 2.196 0.028
trust_t1 ~1 2.836 2.712 2.960 4.434 44.798 0.000
d_trust_1 ~~ d_trust_1 0.076 0.010 0.142 0.872 2.244 0.025
d_trust_1 ~ trust_t1 -0.165 -0.282 -0.047 -0.358 -2.747 0.006
d_trust_1 ~~ sb06_01_t1 -0.035 -0.099 0.028 -0.127 -1.089 0.276
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with trust change score (current-self) is not significantly different from zero, r = -0.127, p = 0.276.

6.4.2.22 Trust - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8016.542 8100.649 0.958 0.043 0.047
# parameters of interest
params_lcs_trust_ideal_hyp4 <- broom::tidy(fit_mi_lcs_trust_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 0.897 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.338 NA NA
d_trust_1 ~1 -0.033 -0.404 0.338 -0.254 -0.176 0.860
trust_t1 ~1 1.900 1.808 1.993 5.456 40.189 0.000
d_trust_1 ~~ d_trust_1 0.017 -0.020 0.054 0.982 0.909 0.364
d_trust_1 ~ trust_t1 0.050 -0.145 0.245 0.133 0.504 0.614
d_trust_1 ~~ sb06_01_t1 -0.006 -0.051 0.039 -0.045 -0.260 0.795
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with trust change score (ideal-self) is not significantly different from zero, r = -0.045, p = 0.795.

6.4.2.23 Trust - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8537.293 8621.4 0.941 0.063 0.065
# parameters of interest
params_lcs_trust_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.069 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.500 NA NA
d_trust_1 ~1 0.392 0.068 0.716 1.305 2.370 0.018
trust_t1 ~1 2.836 2.712 2.960 4.418 44.795 0.000
d_trust_1 ~~ d_trust_1 0.078 0.012 0.144 0.865 2.320 0.020
d_trust_1 ~ trust_t1 -0.172 -0.285 -0.059 -0.368 -2.975 0.003
d_trust_1 ~~ sb07_06_t1 -0.033 -0.122 0.055 -0.088 -0.739 0.460
sb07_06_t1 ~~ sb07_06_t1 1.829 1.657 2.000 1.000 20.861 0.000

Correlation of specific, facet-level change goals with trust change score (current-self) is not significantly different from zero, r = -0.088, p = 0.46.

6.4.2.24 Trust - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8209.045 8293.152 0.959 0.043 0.047
# parameters of interest
params_lcs_trust_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", # change goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 0.897 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.336 NA NA
d_trust_1 ~1 -0.036 -0.406 0.334 -0.273 -0.189 0.850
trust_t1 ~1 1.900 1.808 1.993 5.454 40.199 0.000
d_trust_1 ~~ d_trust_1 0.017 -0.020 0.053 0.981 0.902 0.367
d_trust_1 ~ trust_t1 0.052 -0.143 0.246 0.138 0.520 0.603
d_trust_1 ~~ sb07_06_t1 -0.032 -0.094 0.030 -0.184 -1.019 0.308
sb07_06_t1 ~~ sb07_06_t1 1.829 1.657 2.000 1.000 20.861 0.000

Correlation of specific, facet-level change goals with trust change score (ideal-self) is not significantly different from zero, r = -0.184, p = 0.308.

6.4.2.25 Organization - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7871.053 7955.16 0.981 0.047 0.037
# parameters of interest
params_lcs_organ_curr_hyp4 <- broom::tidy(fit_mi_lcs_organ_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.014 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.453 NA NA
d_organ_1 ~1 0.235 -0.022 0.493 0.511 1.794 0.073
organ_t1 ~1 2.856 2.709 3.004 2.771 37.961 0.000
d_organ_1 ~~ d_organ_1 0.198 0.083 0.313 0.936 3.386 0.001
d_organ_1 ~ organ_t1 -0.113 -0.203 -0.023 -0.254 -2.469 0.014
d_organ_1 ~~ sb06_01_t1 -0.007 -0.089 0.076 -0.015 -0.163 0.871
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with organization change score (current-self) is not significantly different from zero, r = -0.015, p = 0.871.

6.4.2.26 Organization - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7060.943 7145.05 0.797 0.077 0.089
# parameters of interest
params_lcs_organ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_organ_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.980 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.709 NA NA
d_organ_1 ~1 0.384 0.076 0.691 1.353 2.446 0.014
organ_t1 ~1 1.679 1.575 1.782 4.282 31.762 0.000
d_organ_1 ~~ d_organ_1 0.071 0.017 0.126 0.889 2.592 0.010
d_organ_1 ~ organ_t1 -0.241 -0.439 -0.043 -0.333 -2.385 0.017
d_organ_1 ~~ sb06_01_t1 0.004 -0.048 0.057 0.016 0.165 0.869
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with organization change score (ideal-self) is not significantly different from zero, r = 0.016, p = 0.869.

6.4.2.27 Organization - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8123.153 8207.26 0.857 0.137 0.168
# parameters of interest
params_lcs_organ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.065 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.513 NA NA
d_organ_1 ~1 0.411 0.085 0.736 0.829 2.473 0.013
organ_t1 ~1 2.856 2.709 3.003 2.776 37.969 0.000
d_organ_1 ~~ d_organ_1 0.213 0.096 0.330 0.868 3.575 0.000
d_organ_1 ~ organ_t1 -0.175 -0.287 -0.063 -0.363 -3.059 0.002
d_organ_1 ~~ sb07_07_t1 0.140 -0.005 0.285 0.204 1.890 0.059
sb07_07_t1 ~~ sb07_07_t1 2.198 2.006 2.391 1.000 22.374 0.000

Correlation of specific, facet-level change goals with organization change score (current-self) is not significantly different from zero, r = 0.204, p = 0.059.

6.4.2.28 Organization - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7315.24 7399.347 0.764 0.084 0.092
# parameters of interest
params_lcs_organ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", # change goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.979 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.715 NA NA
d_organ_1 ~1 0.392 0.087 0.696 1.382 2.521 0.012
organ_t1 ~1 1.678 1.575 1.782 4.328 31.814 0.000
d_organ_1 ~~ d_organ_1 0.071 0.017 0.126 0.888 2.571 0.010
d_organ_1 ~ organ_t1 -0.245 -0.441 -0.049 -0.335 -2.448 0.014
d_organ_1 ~~ sb07_07_t1 0.048 -0.035 0.132 0.122 1.133 0.257
sb07_07_t1 ~~ sb07_07_t1 2.198 2.006 2.391 1.000 22.374 0.000

Correlation of specific, facet-level change goals with organization change score (ideal-self) is not significantly different from zero, r = 0.122, p = 0.257.

6.4.2.29 Productiveness - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7909.008 7993.115 0.941 0.079 0.07
# parameters of interest
params_lcs_produ_curr_hyp4 <- broom::tidy(fit_mi_lcs_produ_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.021 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.655 NA NA
d_produ_1 ~1 0.609 0.191 1.026 1.011 2.857 0.004
produ_t1 ~1 3.417 3.284 3.551 3.641 50.178 0.000
d_produ_1 ~~ d_produ_1 0.318 0.154 0.481 0.876 3.807 0.000
d_produ_1 ~ produ_t1 -0.226 -0.345 -0.106 -0.352 -3.708 0.000
d_produ_1 ~~ sb06_01_t1 -0.004 -0.108 0.100 -0.007 -0.075 0.940
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with productiveness change score (current-self) is not significantly different from zero, r = -0.007, p = 0.94.

6.4.2.30 Productiveness - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 5970.44 6054.547 0.915 0.071 0.064
# parameters of interest
params_lcs_produ_ideal_hyp4 <- broom::tidy(fit_mi_lcs_produ_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.887 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.584 NA NA
d_produ_1 ~1 0.141 -0.162 0.443 0.557 0.913 0.361
produ_t1 ~1 1.596 1.517 1.675 4.156 39.452 0.000
d_produ_1 ~~ d_produ_1 0.063 0.009 0.117 0.985 2.292 0.022
d_produ_1 ~ produ_t1 -0.081 -0.283 0.122 -0.123 -0.782 0.434
d_produ_1 ~~ sb06_01_t1 -0.021 -0.069 0.027 -0.083 -0.856 0.392
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with productiveness change score (ideal-self) is not significantly different from zero, r = -0.083, p = 0.392.

6.4.2.31 Productiveness - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8107.171 8191.278 0.851 0.132 0.155
# parameters of interest
params_lcs_produ_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.093 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.763 NA NA
d_produ_1 ~1 0.946 0.474 1.419 1.456 3.924 0.000
produ_t1 ~1 3.417 3.283 3.550 3.668 50.200 0.000
d_produ_1 ~~ d_produ_1 0.331 0.169 0.493 0.783 3.998 0.000
d_produ_1 ~ produ_t1 -0.325 -0.460 -0.190 -0.466 -4.709 0.000
d_produ_1 ~~ sb07_08_t1 0.201 0.054 0.348 0.254 2.677 0.007
sb07_08_t1 ~~ sb07_08_t1 1.899 1.651 2.148 1.000 14.992 0.000

Correlation of specific, facet-level change goals with productiveness change score (current-self) is significantly different from zero, r = 0.254, p = 0.007.

6.4.2.32 Productiveness - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 6176.162 6260.269 0.916 0.071 0.063
# parameters of interest
params_lcs_produ_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", # change goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.880 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.574 NA NA
d_produ_1 ~1 0.119 -0.185 0.423 0.478 0.766 0.444
produ_t1 ~1 1.596 1.517 1.676 4.183 39.484 0.000
d_produ_1 ~~ d_produ_1 0.061 0.009 0.113 0.989 2.294 0.022
d_produ_1 ~ produ_t1 -0.067 -0.271 0.137 -0.103 -0.646 0.518
d_produ_1 ~~ sb07_08_t1 0.041 -0.016 0.097 0.119 1.415 0.157
sb07_08_t1 ~~ sb07_08_t1 1.899 1.651 2.148 1.000 14.992 0.000

Correlation of specific, facet-level change goals with productiveness change score (ideal-self) is not significantly different from zero, r = 0.119, p = 0.157.

6.4.2.33 Responsibility - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8081.61 8165.717 0.903 0.087 0.093
# parameters of interest
params_lcs_respo_curr_hyp4 <- broom::tidy(fit_mi_lcs_respo_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.038 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.545 NA NA
d_respo_1 ~1 0.680 0.285 1.076 2.653 3.369 0.001
respo_t1 ~1 3.598 3.494 3.703 7.363 67.313 0.000
d_respo_1 ~~ d_respo_1 0.059 0.012 0.105 0.891 2.480 0.013
d_respo_1 ~ respo_t1 -0.173 -0.282 -0.065 -0.330 -3.141 0.002
d_respo_1 ~~ sb06_01_t1 0.011 -0.038 0.060 0.047 0.457 0.648
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with responsibility change score (current-self) is not significantly different from zero, r = 0.047, p = 0.648.

6.4.2.34 Responsibility - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7581.434 7665.541 0.922 0.06 0.054
# parameters of interest
params_lcs_respo_ideal_hyp4 <- broom::tidy(fit_mi_lcs_respo_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.018 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.668 NA NA
d_respo_1 ~1 0.968 0.220 1.715 5.088 2.538 0.011
respo_t1 ~1 4.189 4.080 4.297 14.439 75.423 0.000
d_respo_1 ~~ d_respo_1 0.032 0.002 0.061 0.874 2.074 0.038
d_respo_1 ~ respo_t1 -0.233 -0.408 -0.057 -0.355 -2.600 0.009
d_respo_1 ~~ sb06_01_t1 0.015 -0.022 0.052 0.084 0.800 0.424
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with responsibility change score (ideal-self) is not significantly different from zero, r = 0.084, p = 0.424.

6.4.2.35 Responsibility - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8334.214 8418.321 0.859 0.108 0.12
# parameters of interest
params_lcs_respo_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.075 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.597 NA NA
d_respo_1 ~1 0.854 0.424 1.284 3.157 3.895 0.000
respo_t1 ~1 3.598 3.494 3.703 7.385 67.335 0.000
d_respo_1 ~~ d_respo_1 0.062 0.015 0.108 0.841 2.593 0.010
d_respo_1 ~ respo_t1 -0.221 -0.339 -0.103 -0.399 -3.672 0.000
d_respo_1 ~~ sb07_09_t1 -0.065 -0.140 0.011 -0.176 -1.683 0.092
sb07_09_t1 ~~ sb07_09_t1 2.198 2.013 2.382 1.000 23.300 0.000

Correlation of specific, facet-level change goals with responsibility change score (current-self) is not significantly different from zero, r = -0.176, p = 0.092.

6.4.2.36 Responsibility - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7837.713 7921.82 0.936 0.054 0.052
# parameters of interest
params_lcs_respo_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", # change goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.020 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.665 NA NA
d_respo_1 ~1 0.966 0.212 1.720 5.047 2.512 0.012
respo_t1 ~1 4.188 4.080 4.297 14.264 75.446 0.000
d_respo_1 ~~ d_respo_1 0.032 0.002 0.062 0.873 2.091 0.037
d_respo_1 ~ respo_t1 -0.232 -0.409 -0.055 -0.356 -2.574 0.010
d_respo_1 ~~ sb07_09_t1 -0.010 -0.066 0.046 -0.037 -0.346 0.729
sb07_09_t1 ~~ sb07_09_t1 2.198 2.013 2.382 1.000 23.300 0.000

Correlation of specific, facet-level change goals with responsibility change score (ideal-self) is not significantly different from zero, r = -0.037, p = 0.729.

6.4.2.37 Anxiety - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8150.319 8234.426 0.952 0.062 0.084
# parameters of interest
params_lcs_anxie_curr_hyp4 <- broom::tidy(fit_mi_lcs_anxie_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.023 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.464 NA NA
d_anxie_1 ~1 0.559 0.242 0.875 1.309 3.462 0.001
anxie_t1 ~1 2.748 2.613 2.883 2.920 39.959 0.000
d_anxie_1 ~~ d_anxie_1 0.168 0.071 0.266 0.924 3.384 0.001
d_anxie_1 ~ anxie_t1 -0.125 -0.234 -0.015 -0.275 -2.235 0.025
d_anxie_1 ~~ sb06_01_t1 0.021 -0.076 0.117 0.050 0.419 0.675
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with anxiety change score (current-self) is not significantly different from zero, r = 0.05, p = 0.675.

6.4.2.38 Anxiety - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7723.024 7807.131 0.958 0.028 0.046
# parameters of interest
params_lcs_anxie_ideal_hyp4 <- broom::tidy(fit_mi_lcs_anxie_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.898 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.895 NA NA
d_anxie_1 ~1 1.708 0.298 3.118 6.680 2.374 0.018
anxie_t1 ~1 4.596 4.535 4.658 17.904 146.723 0.000
d_anxie_1 ~~ d_anxie_1 0.056 0.006 0.106 0.857 2.213 0.027
d_anxie_1 ~ anxie_t1 -0.376 -0.680 -0.073 -0.378 -2.428 0.015
d_anxie_1 ~~ sb06_01_t1 0.047 -0.001 0.095 0.194 1.907 0.056
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with anxiety change score (ideal-self) is not significantly different from zero, r = 0.194, p = 0.056.

6.4.2.39 Anxiety - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8417.783 8501.89 0.853 0.115 0.151
# parameters of interest
params_lcs_anxie_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.038 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.482 NA NA
d_anxie_1 ~1 0.610 0.270 0.951 1.398 3.518 0.000
anxie_t1 ~1 2.748 2.613 2.883 2.922 39.956 0.000
d_anxie_1 ~~ d_anxie_1 0.172 0.075 0.269 0.904 3.479 0.001
d_anxie_1 ~ anxie_t1 -0.144 -0.264 -0.024 -0.309 -2.345 0.019
d_anxie_1 ~~ sb07_10_t1 -0.024 -0.173 0.125 -0.039 -0.319 0.750
sb07_10_t1 ~~ sb07_10_t1 2.275 2.040 2.510 1.000 18.985 0.000

The correlation of specific, facet-level change goals with the anxiety change score (current-self) is not significantly different from zero, r = -0.039, p = 0.75.

6.4.2.40 Anxiety - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7994.889 8078.996 0.938 0.034 0.051
# parameters of interest
params_lcs_anxie_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", # change goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.892 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.881 NA NA
d_anxie_1 ~1 1.629 0.188 3.071 6.322 2.215 0.027
anxie_t1 ~1 4.596 4.535 4.658 17.604 146.404 0.000
d_anxie_1 ~~ d_anxie_1 0.058 0.007 0.108 0.868 2.230 0.026
d_anxie_1 ~ anxie_t1 -0.359 -0.670 -0.049 -0.364 -2.266 0.023
d_anxie_1 ~~ sb07_10_t1 0.021 -0.041 0.084 0.059 0.677 0.499
sb07_10_t1 ~~ sb07_10_t1 2.275 2.040 2.510 1.000 18.985 0.000

Correlation of specific, facet-level change goals with anxiety change score (ideal-self) is not significantly different from zero, r = 0.059, p = 0.499.

6.4.2.41 Depression - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8103.179 8187.286 0.905 0.107 0.118
# parameters of interest
params_lcs_depre_curr_hyp4 <- broom::tidy(fit_mi_lcs_depre_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.071 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.607 NA NA
d_depre_1 ~1 0.799 0.496 1.103 2.120 5.170 0.0
depre_t1 ~1 3.037 2.917 3.158 4.561 49.367 0.0
d_depre_1 ~~ d_depre_1 0.120 0.065 0.175 0.843 4.267 0.0
d_depre_1 ~ depre_t1 -0.225 -0.324 -0.125 -0.397 -4.410 0.0
d_depre_1 ~~ sb06_01_t1 -0.028 -0.092 0.037 -0.078 -0.841 0.4
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.0
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.0

Correlation of general change goal with depression change score (current-self) is not significantly different from zero, r = -0.078, p = 0.4.

6.4.2.42 Depression - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 6477.437 6561.544 0.913 0.063 0.064
# parameters of interest
params_lcs_depre_ideal_hyp4 <- broom::tidy(fit_mi_lcs_depre_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.035 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.886 NA NA
d_depre_1 ~1 1.764 0.840 2.687 7.127 3.742 0.000
depre_t1 ~1 4.454 4.384 4.524 15.417 124.697 0.000
d_depre_1 ~~ d_depre_1 0.048 0.013 0.083 0.782 2.663 0.008
d_depre_1 ~ depre_t1 -0.400 -0.604 -0.196 -0.467 -3.848 0.000
d_depre_1 ~~ sb06_01_t1 0.016 -0.022 0.054 0.072 0.822 0.411
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with depression change score (ideal-self) is not significantly different from zero, r = 0.072, p = 0.411.

6.4.2.43 Depression - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8401.66 8485.767 0.811 0.161 0.185
# parameters of interest
params_lcs_depre_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.180 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.774 NA NA
d_depre_1 ~1 1.197 0.794 1.599 2.756 5.829 0.000
depre_t1 ~1 3.038 2.917 3.159 4.591 49.381 0.000
d_depre_1 ~~ d_depre_1 0.133 0.073 0.193 0.705 4.357 0.000
d_depre_1 ~ depre_t1 -0.356 -0.489 -0.223 -0.543 -5.239 0.000
d_depre_1 ~~ sb07_11_t1 -0.220 -0.348 -0.093 -0.374 -3.386 0.001
sb07_11_t1 ~~ sb07_11_t1 2.609 2.418 2.799 1.000 26.880 0.000

The correlation of specific, facet-level change goals with the depression change score (current-self) is significantly different from zero, r = -0.374, p = 0.001.

6.4.2.44 Depression - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 6791.179 6875.286 0.901 0.067 0.067
# parameters of interest
params_lcs_depre_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", # change goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.035 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.884 NA NA
d_depre_1 ~1 1.755 0.811 2.699 7.063 3.645 0.000
depre_t1 ~1 4.454 4.384 4.524 15.308 124.716 0.000
d_depre_1 ~~ d_depre_1 0.048 0.013 0.084 0.783 2.676 0.007
d_depre_1 ~ depre_t1 -0.398 -0.606 -0.190 -0.466 -3.750 0.000
d_depre_1 ~~ sb07_11_t1 -0.022 -0.074 0.031 -0.061 -0.811 0.417
sb07_11_t1 ~~ sb07_11_t1 2.609 2.418 2.799 1.000 26.880 0.000

Correlation of specific, facet-level change goals with the depression change score (ideal-self) is not significantly different from zero, r = -0.061, p = 0.417.

6.4.2.45 Volatility - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8147.906 8232.013 0.965 0.061 0.086
# parameters of interest
params_lcs_volat_curr_hyp4 <- broom::tidy(fit_mi_lcs_volat_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.162 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.671 NA NA
d_volat_1 ~1 0.747 0.464 1.030 1.312 5.178 0.000
volat_t1 ~1 3.117 2.978 3.256 3.161 43.889 0.000
d_volat_1 ~~ d_volat_1 0.238 0.148 0.329 0.736 5.145 0.000
d_volat_1 ~ volat_t1 -0.296 -0.386 -0.207 -0.514 -6.480 0.000
d_volat_1 ~~ sb06_01_t1 0.015 -0.067 0.097 0.030 0.354 0.724
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with volatility change score (current-self) is not significantly different from zero, r = 0.03, p = 0.724.

6.4.2.46 Volatility - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7261.696 7345.803 0.957 0.041 0.052
# parameters of interest
params_lcs_volat_ideal_hyp4 <- broom::tidy(fit_mi_lcs_volat_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 0.847 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.644 NA NA
d_volat_1 ~1 0.193 -0.146 0.533 0.604 1.116 0.264
volat_t1 ~1 1.599 1.523 1.674 3.803 41.347 0.000
d_volat_1 ~~ d_volat_1 0.101 0.024 0.178 0.985 2.560 0.010
d_volat_1 ~ volat_t1 -0.092 -0.316 0.131 -0.121 -0.809 0.419
d_volat_1 ~~ sb06_01_t1 -0.032 -0.088 0.025 -0.098 -1.101 0.271
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with volatility change score (ideal-self) is not significantly different from zero, r = -0.098, p = 0.271.

6.4.2.47 Volatility - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8383.689 8467.796 0.959 0.066 0.092
# parameters of interest
params_lcs_volat_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.192 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.712 NA NA
d_volat_1 ~1 0.839 0.550 1.128 1.420 5.692 0.000
volat_t1 ~1 3.117 2.978 3.256 3.151 43.873 0.000
d_volat_1 ~~ d_volat_1 0.245 0.152 0.338 0.702 5.181 0.000
d_volat_1 ~ volat_t1 -0.326 -0.418 -0.234 -0.546 -6.955 0.000
d_volat_1 ~~ sb07_12_t1 0.139 0.007 0.270 0.193 2.071 0.038
sb07_12_t1 ~~ sb07_12_t1 2.104 1.911 2.296 1.000 21.424 0.000

Correlation of specific, facet-level change goals with volatility change score (current-self) is significantly different from zero, r = 0.193, p = 0.038.

6.4.2.48 Volatility - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7502.824 7586.931 0.971 0.034 0.044
# parameters of interest
params_lcs_volat_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", # change goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 0.840 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.633 NA NA
d_volat_1 ~1 0.166 -0.172 0.504 0.525 0.961 0.336
volat_t1 ~1 1.599 1.523 1.674 3.812 41.368 0.000
d_volat_1 ~~ d_volat_1 0.099 0.022 0.175 0.990 2.517 0.012
d_volat_1 ~ volat_t1 -0.075 -0.298 0.147 -0.100 -0.664 0.507
d_volat_1 ~~ sb07_12_t1 0.043 -0.041 0.126 0.094 1.005 0.315
sb07_12_t1 ~~ sb07_12_t1 2.104 1.911 2.296 1.000 21.424 0.000

Correlation of specific, facet-level change goals with volatility change score (ideal-self) is not significantly different from zero, r = 0.094, p = 0.315.

6.4.2.49 Curiosity - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7963.513 8047.62 0.989 0.026 0.04
# parameters of interest
params_lcs_curio_curr_hyp4 <- broom::tidy(fit_mi_lcs_curio_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.994 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.433 NA NA
d_curio_1 ~1 0.408 -0.207 1.023 2.147 1.299 0.194
curio_t1 ~1 4.182 4.095 4.269 9.590 93.797 0.000
d_curio_1 ~~ d_curio_1 0.035 0.001 0.069 0.959 1.992 0.046
d_curio_1 ~ curio_t1 -0.089 -0.231 0.054 -0.203 -1.214 0.225
d_curio_1 ~~ sb06_01_t1 -0.007 -0.050 0.036 -0.037 -0.316 0.752
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with curiosity change score (current-self) is not significantly different from zero, r = -0.037, p = 0.752.

6.4.2.50 Curiosity - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7937.656 8021.763 0.926 0.052 0.057
# parameters of interest
params_lcs_curio_ideal_hyp4 <- broom::tidy(fit_mi_lcs_curio_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.980 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.467 NA NA
d_curio_1 ~1 0.446 -0.498 1.389 3.182 0.926 0.355
curio_t1 ~1 4.536 4.465 4.606 15.423 126.046 0.000
d_curio_1 ~~ d_curio_1 0.019 -0.006 0.043 0.962 1.503 0.133
d_curio_1 ~ curio_t1 -0.093 -0.298 0.112 -0.195 -0.889 0.374
d_curio_1 ~~ sb06_01_t1 0.027 -0.013 0.067 0.193 1.322 0.186
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with curiosity change score (ideal-self) is not significantly different from zero, r = 0.193, p = 0.186.

6.4.2.51 Curiosity - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8136.233 8220.34 0.953 0.054 0.076
# parameters of interest
params_lcs_curio_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.983 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.420 NA NA
d_curio_1 ~1 0.348 -0.293 0.988 1.880 1.064 0.287
curio_t1 ~1 4.182 4.095 4.269 9.666 93.832 0.000
d_curio_1 ~~ d_curio_1 0.033 -0.001 0.067 0.970 1.910 0.056
d_curio_1 ~ curio_t1 -0.074 -0.223 0.075 -0.174 -0.975 0.329
d_curio_1 ~~ sb07_13_t1 0.020 -0.044 0.084 0.083 0.608 0.543
sb07_13_t1 ~~ sb07_13_t1 1.720 1.527 1.912 1.000 17.527 0.000

Correlation of specific, facet-level change goals with curiosity change score (current-self) is not significantly different from zero, r = 0.083, p = 0.543.

6.4.2.52 Curiosity - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8112.848 8196.955 0.951 0.042 0.054
# parameters of interest
params_lcs_curio_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", # change goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.979 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.466 NA NA
d_curio_1 ~1 0.439 -0.503 1.382 3.083 0.914 0.361
curio_t1 ~1 4.536 4.465 4.607 15.149 125.972 0.000
d_curio_1 ~~ d_curio_1 0.020 -0.006 0.045 0.963 1.493 0.135
d_curio_1 ~ curio_t1 -0.092 -0.297 0.113 -0.193 -0.876 0.381
d_curio_1 ~~ sb07_13_t1 -0.001 -0.049 0.048 -0.004 -0.027 0.978
sb07_13_t1 ~~ sb07_13_t1 1.720 1.527 1.912 1.000 17.527 0.000

Correlation of specific, facet-level change goals with curiosity change score (ideal-self) is not significantly different from zero, r = -0.004, p = 0.978.

6.4.2.53 Aesthetic - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8170.972 8255.079 1 0 0.031
# parameters of interest
params_lcs_aesth_curr_hyp4 <- broom::tidy(fit_mi_lcs_aesth_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 1.000 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.489 NA NA
d_aesth_1 ~1 0.342 0.065 0.620 3.455 2.415 0.016
aesth_t1 ~1 2.934 2.810 3.058 14.461 46.387 0.000
d_aesth_1 ~~ d_aesth_1 0.009 -0.005 0.024 0.940 1.253 0.210
d_aesth_1 ~ aesth_t1 -0.119 -0.216 -0.023 -0.244 -2.429 0.015
d_aesth_1 ~~ sb06_01_t1 0.019 -0.002 0.040 0.190 1.735 0.083
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with aesthetic change score (current-self) is not significantly different from zero, r = 0.19, p = 0.083.

6.4.2.54 Aesthetic - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8063.697 8147.804 1 0 0.032
# parameters of interest
params_lcs_aesth_ideal_hyp4 <- broom::tidy(fit_mi_lcs_aesth_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.984 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.545 NA NA
d_aesth_1 ~1 0.420 -0.094 0.934 36.092 1.602 0.109
aesth_t1 ~1 3.064 2.927 3.201 145.780 43.857 0.000
d_aesth_1 ~~ d_aesth_1 0.000 0.000 0.000 0.939 2.356 0.018
d_aesth_1 ~ aesth_t1 -0.137 -0.304 0.030 -0.248 -1.609 0.108
d_aesth_1 ~~ sb06_01_t1 -0.002 -0.004 0.001 -0.146 -1.470 0.142
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with aesthetic change score (ideal-self) is not significantly different from zero, r = -0.146, p = 0.142.

6.4.2.55 Aesthetic - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8393.414 8477.521 1 0.002 0.035
# parameters of interest
params_lcs_aesth_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 1.001 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.488 NA NA
d_aesth_1 ~1 0.345 0.065 0.624 3.495 2.415 0.016
aesth_t1 ~1 2.934 2.810 3.058 14.520 46.389 0.000
d_aesth_1 ~~ d_aesth_1 0.009 -0.005 0.023 0.940 1.249 0.212
d_aesth_1 ~ aesth_t1 -0.120 -0.217 -0.023 -0.246 -2.426 0.015
d_aesth_1 ~~ sb07_14_t1 0.004 -0.020 0.027 0.027 0.292 0.771
sb07_14_t1 ~~ sb07_14_t1 1.960 1.782 2.138 1.000 21.633 0.000

Correlation of specific, facet-level change goals with aesthetic change score (current-self) is not significantly different from zero, r = 0.027, p = 0.771.

6.4.2.56 Aesthetic - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8282.657 8366.764 0.977 0.037 0.058
# parameters of interest
params_lcs_aesth_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", # change goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.989 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.546 NA NA
d_aesth_1 ~1 0.434 -0.097 0.966 40.628 1.601 0.109
aesth_t1 ~1 3.064 2.927 3.201 158.344 43.860 0.000
d_aesth_1 ~~ d_aesth_1 0.000 0.000 0.000 0.934 2.335 0.020
d_aesth_1 ~ aesth_t1 -0.142 -0.314 0.031 -0.257 -1.608 0.108
d_aesth_1 ~~ sb07_14_t1 0.001 -0.002 0.004 0.073 0.705 0.481
sb07_14_t1 ~~ sb07_14_t1 1.960 1.782 2.138 1.000 21.633 0.000

Correlation of specific, facet-level change goals with aesthetic change score (ideal-self) is not significantly different from zero, r = 0.073, p = 0.481.

6.4.2.57 Imagination - current-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7786.61 7870.717 0.962 0.056 0.054
# parameters of interest
params_lcs_imagi_curr_hyp4 <- broom::tidy(fit_mi_lcs_imagi_curr_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.025 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.489 NA NA
d_imagi_1 ~1 0.612 0.195 1.029 1.752 2.878 0.004
imagi_t1 ~1 3.644 3.544 3.744 4.978 71.253 0.000
d_imagi_1 ~~ d_imagi_1 0.112 0.045 0.179 0.917 3.267 0.001
d_imagi_1 ~ imagi_t1 -0.138 -0.247 -0.028 -0.288 -2.453 0.014
d_imagi_1 ~~ sb06_01_t1 -0.015 -0.080 0.051 -0.044 -0.440 0.660
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with imagination change score (current-self) is not significantly different from zero, r = -0.044, p = 0.66.

6.4.2.58 Imagination - ideal-self: general change goals

Results summary (sb06_01_t1 = general change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7251.188 7335.295 0.939 0.048 0.054
# parameters of interest
params_lcs_imagi_ideal_hyp4 <- broom::tidy(fit_mi_lcs_imagi_ideal_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb06_01_t1", "sb06_01_t1 ~~ sb06_01_t1", "sb06_01_t1 ~1 ", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.069 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.743 NA NA
d_imagi_1 ~1 1.424 0.376 2.472 5.407 2.663 0.008
imagi_t1 ~1 4.611 4.549 4.673 12.173 146.025 0.000
d_imagi_1 ~~ d_imagi_1 0.056 0.021 0.092 0.809 3.096 0.002
d_imagi_1 ~ imagi_t1 -0.304 -0.528 -0.080 -0.438 -2.665 0.008
d_imagi_1 ~~ sb06_01_t1 0.010 -0.034 0.053 0.041 0.447 0.655
sb06_01_t1 ~~ sb06_01_t1 1.029 0.883 1.175 1.000 13.805 0.000
sb06_01_t1 ~1 3.059 2.951 3.168 3.016 55.362 0.000

Correlation of general change goal with imagination change score (ideal-self) is not significantly different from zero, r = 0.041, p = 0.655.

6.4.2.59 Imagination - current-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 8010.164 8094.271 0.915 0.085 0.098
# parameters of interest
params_lcs_imagi_curr_specif_hyp4 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.044 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.512 NA NA
d_imagi_1 ~1 0.701 0.269 1.132 1.958 3.185 0.001
imagi_t1 ~1 3.644 3.544 3.745 4.996 71.264 0.000
d_imagi_1 ~~ d_imagi_1 0.114 0.048 0.180 0.892 3.386 0.001
d_imagi_1 ~ imagi_t1 -0.161 -0.275 -0.048 -0.329 -2.778 0.005
d_imagi_1 ~~ sb07_15_t1 -0.088 -0.180 0.004 -0.184 -1.878 0.060
sb07_15_t1 ~~ sb07_15_t1 2.018 1.837 2.198 1.000 21.903 0.000

Correlation of specific, facet-level change goals with imagination change score (current-self) is not significantly different from zero, r = -0.184, p = 0.06.

6.4.2.60 Imagination - ideal-self: specific, facet-level change goals

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp4) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 22 7478.098 7562.205 0.892 0.065 0.066
# parameters of interest
params_lcs_imagi_ideal_specif_hyp4 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp4, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", # change goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp4, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.068 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.740 NA NA
d_imagi_1 ~1 1.413 0.363 2.462 5.375 2.638 0.008
imagi_t1 ~1 4.611 4.549 4.673 12.160 146.023 0.000
d_imagi_1 ~~ d_imagi_1 0.056 0.020 0.092 0.811 3.085 0.002
d_imagi_1 ~ imagi_t1 -0.302 -0.525 -0.078 -0.435 -2.640 0.008
d_imagi_1 ~~ sb07_15_t1 -0.014 -0.076 0.048 -0.042 -0.443 0.658
sb07_15_t1 ~~ sb07_15_t1 2.018 1.837 2.198 1.000 21.903 0.000

Correlation of specific, facet-level change goals with imagination change score (ideal-self) is not significantly different from zero, r = -0.042, p = 0.658.

6.4.3 Hyp 4: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp4 <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_ideal_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_curr_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_ideal_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_curr_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_ideal_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_curr_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_ideal_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_curr_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_ideal_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_curr_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_ideal_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_curr_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_socia_ideal_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_asser_curr_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_ideal_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_curr_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_asser_ideal_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_energ_curr_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_ideal_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_curr_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_energ_ideal_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_compa_curr_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_ideal_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_curr_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_compa_ideal_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_respe_curr_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_ideal_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_curr_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_respe_ideal_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_trust_curr_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_ideal_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_curr_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_trust_ideal_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_organ_curr_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_ideal_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_curr_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_organ_ideal_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_produ_curr_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_ideal_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_curr_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_produ_ideal_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_respo_curr_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_ideal_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_curr_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_respo_ideal_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_anxie_curr_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_ideal_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_curr_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_depre_curr_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_ideal_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_curr_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_depre_ideal_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_volat_curr_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_ideal_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_curr_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_volat_ideal_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_curio_curr_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_ideal_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_curr_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_curio_ideal_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_aesth_curr_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_ideal_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_curr_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_imagi_curr_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_ideal_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_curr_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: covariance of the latent change score and change goal(s)

kable(df_table_hyp4[1:20, ], digits = 3)
trait ref goal estimate std.all statistic p.value
extraversion current general -0.026 -0.097 -1.090 0.276
extraversion ideal general 0.002 0.009 0.094 0.925
extraversion current specific -0.046 -0.263 -1.264 0.206
extraversion ideal specific 0.016 0.118 0.812 0.417
agreeableness current general 0.023 0.118 1.383 0.167
agreeableness ideal general 0.009 0.034 0.438 0.662
agreeableness current specific -0.014 -0.078 -0.728 0.467
agreeableness ideal specific -0.004 -0.016 -0.150 0.880
conscientiousness current general 0.022 0.055 0.619 0.536
conscientiousness ideal general 0.011 0.044 0.538 0.590
conscientiousness current specific -0.108 -0.230 -2.365 0.018
conscientiousness ideal specific -0.035 -0.116 -1.255 0.209
neuroticism current general -0.004 -0.010 -0.123 0.902
neuroticism ideal general -0.046 -0.130 -1.665 0.096
neuroticism current specific 0.135 0.287 3.053 0.002
neuroticism ideal specific 0.027 0.071 0.847 0.397
openness current general -0.016 -0.060 -0.692 0.489
openness ideal general 0.003 0.018 0.197 0.844
openness current specific -0.028 -0.134 -1.392 0.164
openness ideal specific -0.002 -0.018 -0.177 0.860

Three covariances/correlations that significantly differ from zero:
- Changes in current-level conscientiousness covary with the specific trait goals (latent factor of the three C facets).
- Changes in current-level neuroticism covary with the specific trait goals (latent factor of the three N facets).

Results summary across the Big Five facets: covariance of the latent change score and change goal(s)

kable(df_table_hyp4[21:80, ], digits = 3)
trait ref goal estimate std.all statistic p.value
sociability current general -0.026 -0.071 -0.796 0.426
sociability ideal general 0.042 0.162 1.531 0.126
sociability current specific -0.104 -0.229 -2.128 0.033
sociability ideal specific -0.042 -0.131 -1.224 0.221
assertiveness current general -0.019 -0.073 -0.848 0.397
assertiveness ideal general -0.014 -0.070 -0.629 0.530
assertiveness current specific -0.068 -0.200 -2.134 0.033
assertiveness ideal specific 0.010 0.041 0.405 0.686
energy current general 0.016 0.112 0.976 0.329
energy ideal general 0.000 0.001 0.008 0.993
energy current specific -0.001 -0.008 -0.074 0.941
energy ideal specific 0.003 0.016 0.153 0.879
compassion current general 0.027 0.123 1.014 0.311
compassion ideal general -0.030 -0.133 -1.012 0.312
compassion current specific -0.010 -0.035 -0.264 0.792
compassion ideal specific 0.018 0.061 0.403 0.687
respectfulness current general 0.000 0.001 0.013 0.990
respectfulness ideal general 0.009 0.040 0.367 0.714
respectfulness current specific -0.066 -0.180 -1.915 0.056
respectfulness ideal specific -0.050 -0.171 -1.591 0.112
trust current general -0.035 -0.127 -1.089 0.276
trust ideal general -0.006 -0.045 -0.260 0.795
trust current specific -0.033 -0.088 -0.739 0.460
trust ideal specific -0.032 -0.184 -1.019 0.308
organization current general -0.007 -0.015 -0.163 0.871
organization ideal general 0.004 0.016 0.165 0.869
organization current specific 0.140 0.204 1.890 0.059
organization ideal specific 0.048 0.122 1.133 0.257
productiveness current general -0.004 -0.007 -0.075 0.940
productiveness ideal general -0.021 -0.083 -0.856 0.392
productiveness current specific 0.201 0.254 2.677 0.007
productiveness ideal specific 0.041 0.119 1.415 0.157
responsibility current general 0.011 0.047 0.457 0.648
responsibility ideal general 0.015 0.084 0.800 0.424
responsibility current specific -0.065 -0.176 -1.683 0.092
responsibility ideal specific -0.010 -0.037 -0.346 0.729
anxiety current general 0.021 0.050 0.419 0.675
anxiety ideal general 0.047 0.194 1.907 0.056
anxiety current specific -0.024 -0.039 -0.319 0.750
anxiety ideal specific 0.021 0.059 0.677 0.499
depression current general -0.028 -0.078 -0.841 0.400
depression ideal general 0.016 0.072 0.822 0.411
depression current specific -0.220 -0.374 -3.386 0.001
depression ideal specific -0.022 -0.061 -0.811 0.417
volatility current general 0.015 0.030 0.354 0.724
volatility ideal general -0.032 -0.098 -1.101 0.271
volatility current specific 0.139 0.193 2.071 0.038
volatility ideal specific 0.043 0.094 1.005 0.315
curiosity current general -0.007 -0.037 -0.316 0.752
curiosity ideal general 0.027 0.193 1.322 0.186
curiosity current specific 0.020 0.083 0.608 0.543
curiosity ideal specific -0.001 -0.004 -0.027 0.978
aesthetic current general 0.019 0.190 1.735 0.083
aesthetic ideal general -0.002 -0.146 -1.470 0.142
aesthetic current specific 0.004 0.027 0.292 0.771
aesthetic ideal specific 0.001 0.073 0.705 0.481
imagination current general -0.015 -0.044 -0.440 0.660
imagination ideal general 0.010 0.041 0.447 0.655
imagination current specific -0.088 -0.184 -1.878 0.060
imagination ideal specific -0.014 -0.042 -0.443 0.658

Looking at the facets, we see five covariances that significantly differ from zero (at p < .05):
- For sociability and assertiveness, changes in the current-level the specific facet change goal (both effects barely significant).
- For productiveness, changes in the current-level the specific facet change goal.
- Changes in current-level depression and volatility covary with the respective specific facet change goal.

Prepare data frame for plotting:

Show the code
df_table_hyp4_plot <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_ideal_hyp4 %>% filter(term=="d_extra_1 ~~ sb06_01_t1"),
  params_lcs_extra_curr_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_ideal_hyp4 %>% filter(term=="d_agree_1 ~~ sb06_01_t1"),
  params_lcs_agree_curr_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_ideal_hyp4 %>% filter(term=="d_consc_1 ~~ sb06_01_t1"),
  params_lcs_consc_curr_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_ideal_hyp4 %>% filter(term=="d_neuro_1 ~~ sb06_01_t1"),
  params_lcs_neuro_curr_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_ideal_hyp4 %>% filter(term=="d_openn_1 ~~ sb06_01_t1"),
  params_lcs_openn_curr_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp4 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_ideal_hyp4 %>% filter(term=="d_socia_1 ~~ sb06_01_t1"),
  params_lcs_socia_curr_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_socia_ideal_specif_hyp4 %>% filter(term=="d_socia_1 ~~ sb07_01_t1"),
  params_lcs_asser_curr_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_ideal_hyp4 %>% filter(term=="d_asser_1 ~~ sb06_01_t1"),
  params_lcs_asser_curr_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_asser_ideal_specif_hyp4 %>% filter(term=="d_asser_1 ~~ sb07_02_t1"),
  params_lcs_energ_curr_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_ideal_hyp4 %>% filter(term=="d_energ_1 ~~ sb06_01_t1"),
  params_lcs_energ_curr_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_energ_ideal_specif_hyp4 %>% filter(term=="d_energ_1 ~~ sb07_03_t1"),
  params_lcs_compa_curr_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_ideal_hyp4 %>% filter(term=="d_compa_1 ~~ sb06_01_t1"),
  params_lcs_compa_curr_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_compa_ideal_specif_hyp4 %>% filter(term=="d_compa_1 ~~ sb07_04_t1"),
  params_lcs_respe_curr_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_ideal_hyp4 %>% filter(term=="d_respe_1 ~~ sb06_01_t1"),
  params_lcs_respe_curr_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_respe_ideal_specif_hyp4 %>% filter(term=="d_respe_1 ~~ sb07_05_t1"),
  params_lcs_trust_curr_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_ideal_hyp4 %>% filter(term=="d_trust_1 ~~ sb06_01_t1"),
  params_lcs_trust_curr_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_trust_ideal_specif_hyp4 %>% filter(term=="d_trust_1 ~~ sb07_06_t1"),
  params_lcs_organ_curr_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_ideal_hyp4 %>% filter(term=="d_organ_1 ~~ sb06_01_t1"),
  params_lcs_organ_curr_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_organ_ideal_specif_hyp4 %>% filter(term=="d_organ_1 ~~ sb07_07_t1"),
  params_lcs_produ_curr_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_ideal_hyp4 %>% filter(term=="d_produ_1 ~~ sb06_01_t1"),
  params_lcs_produ_curr_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_produ_ideal_specif_hyp4 %>% filter(term=="d_produ_1 ~~ sb07_08_t1"),
  params_lcs_respo_curr_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_ideal_hyp4 %>% filter(term=="d_respo_1 ~~ sb06_01_t1"),
  params_lcs_respo_curr_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_respo_ideal_specif_hyp4 %>% filter(term=="d_respo_1 ~~ sb07_09_t1"),
  params_lcs_anxie_curr_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_ideal_hyp4 %>% filter(term=="d_anxie_1 ~~ sb06_01_t1"),
  params_lcs_anxie_curr_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp4 %>% filter(term=="d_anxie_1 ~~ sb07_10_t1"),
  params_lcs_depre_curr_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_ideal_hyp4 %>% filter(term=="d_depre_1 ~~ sb06_01_t1"),
  params_lcs_depre_curr_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_depre_ideal_specif_hyp4 %>% filter(term=="d_depre_1 ~~ sb07_11_t1"),
  params_lcs_volat_curr_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_ideal_hyp4 %>% filter(term=="d_volat_1 ~~ sb06_01_t1"),
  params_lcs_volat_curr_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_volat_ideal_specif_hyp4 %>% filter(term=="d_volat_1 ~~ sb07_12_t1"),
  params_lcs_curio_curr_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_ideal_hyp4 %>% filter(term=="d_curio_1 ~~ sb06_01_t1"),
  params_lcs_curio_curr_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_curio_ideal_specif_hyp4 %>% filter(term=="d_curio_1 ~~ sb07_13_t1"),
  params_lcs_aesth_curr_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_ideal_hyp4 %>% filter(term=="d_aesth_1 ~~ sb06_01_t1"),
  params_lcs_aesth_curr_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp4 %>% filter(term=="d_aesth_1 ~~ sb07_14_t1"),
  params_lcs_imagi_curr_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_ideal_hyp4 %>% filter(term=="d_imagi_1 ~~ sb06_01_t1"),
  params_lcs_imagi_curr_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp4 %>% filter(term=="d_imagi_1 ~~ sb07_15_t1"),
) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp4_plot <- df_table_hyp4_plot %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor(ref, levels = c("current", "ideal"), labels = c("current", "ideal"))) %>% 
  mutate(goal = factor(goal, levels = c("general", "specific"), labels = c("general", "specific"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses:

  • current = current-level personality
  • ideal = ideal-level personality
  • general = general change goal
  • specific = specific, facet-level change goal(s)
Show the code
ggplot(df_table_hyp4_plot, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + goal, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")

6.5 H5: Acceptance goals and change in personality (current / ideal) in self-acceptance group

Not specifically preregistered for study 2 because we were foremost interested in the moderation hypothesis (H7 in prereg / H3 in paper) and thought that it was somewhat redundant with these models of correlations with the change score. I still ran the models for study 2 here (without the control group and for changes between T1 and T2) in case the comparison with study 1 is of interest.

In the self-acceptance group, there will be a correlation between acceptance goals and change in ideal-self ratings but not change in current-self ratings.

We will test this one domain/facet at a time. We will use both general continuous change goal score as well as trait-specific change goals. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and correlate change goals with the change variable from those models.

Reshape and split data set by intervention group:

Show the code
# from T1 to T2
df_sbsa2_wide_pers_sa <- df_sbsa2 %>% 
  filter(rando=="Self-Acceptance" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sa07")), # facet-specific change goals
         sa06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with("sa07"), sa06_01)) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa06_01_t2))
# colnames(df_sbsa2_wide_pers_sa)

group_assign <- df_sbsa2 %>% select(pid, rando) %>% unique()

df_sbsa2_wide_pers_sa <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% filter(rando=="Self-Acceptance") %>% select(-rando, -ends_with("_t3")) %>%
  left_join(df_sbsa2_wide_pers_sa)

# follow-up, from T2 to T3 (for later)
df_sbsa2_wide_pers_sa_fu <- df_sbsa2 %>% 
  filter(rando=="Self-Acceptance" & time %in% c(2,3)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sa07")), # facet-specific change goals
         sa06_01) %>% # general change goal
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with("sa07"), sa06_01)) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, sa06_01_t2))
# colnames(df_sbsa2_wide_pers_sa)

df_sbsa2_wide_pers_sa_fu <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% filter(rando=="Self-Acceptance" & !is.na(valid_t2)) %>% select(-rando, -ends_with("_t1")) %>%
  left_join(df_sbsa2_wide_pers_sa_fu)

6.5.1 Big Five traits

6.5.1.1 Extraversion - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_hyp5 <- '
extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

extra_curr_par1_t1 ~~ extra_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_curr_par2_t1 ~~ extra_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_curr_par3_t1 ~~ extra_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1   # This allows residual variance on indicator X2 at T1
extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1   # This allows residual variance on indicator X3 at T1

extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2  # This allows residual variance on indicator X3 at T2

extra_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_extra_curr_hyp5 <- lavaan(mi_lcs_extra_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 4384.367 4453.075 0.992 0.041 0.043
# parameters of interest
params_lcs_extra_curr_hyp5 <- broom::tidy(fit_mi_lcs_extra_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                     "d_extra_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                     "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.025 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.449 NA NA
d_extra_1 ~1 0.453 0.238 0.668 1.736 4.123 0.000
extra_t1 ~1 3.032 2.944 3.119 5.092 67.772 0.000
d_extra_1 ~~ d_extra_1 0.063 0.032 0.094 0.925 3.952 0.000
d_extra_1 ~ extra_t1 -0.120 -0.190 -0.050 -0.274 -3.373 0.001
d_extra_1 ~~ sa06_01_t1 0.008 -0.028 0.044 0.037 0.446 0.656
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

The correlation of general acceptance goal with the extraversion change score (current-self) is not significantly different from zero, r = 0.037, p = 0.656.

6.5.1.2 Extraversion - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_hyp5 <- '
extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

extra_ideal_par1_t1 ~~ extra_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_ideal_par2_t1 ~~ extra_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_ideal_par3_t1 ~~ extra_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

extra_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_extra_ideal_hyp5 <- lavaan(mi_lcs_extra_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3855.205 3923.913 0.96 0.06 0.071
# parameters of interest
params_lcs_extra_ideal_hyp5 <- broom::tidy(fit_mi_lcs_extra_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.993 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.646 NA NA
d_extra_1 ~1 0.736 0.138 1.335 2.841 2.413 0.016
extra_t1 ~1 3.689 3.625 3.752 9.261 113.383 0.000
d_extra_1 ~~ d_extra_1 0.061 0.024 0.098 0.901 3.209 0.001
d_extra_1 ~ extra_t1 -0.205 -0.365 -0.045 -0.315 -2.505 0.012
d_extra_1 ~~ sa06_01_t1 0.016 -0.024 0.057 0.073 0.778 0.437
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with extraversion change score (ideal-self) is not significantly different from zero, r = 0.073, p = 0.437.

6.5.1.3 Extraversion - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_curr_specif_hyp5 <- '
extra_t1 =~ 1*extra_curr_par1_t1 + lamb2*extra_curr_par2_t1 + lamb3*extra_curr_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_curr_par1_t2 + lamb2*extra_curr_par2_t2 + lamb3*extra_curr_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

extra_curr_par1_t1 ~~ extra_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_curr_par2_t1 ~~ extra_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_curr_par3_t1 ~~ extra_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_curr_par1_t1 ~~ res1*extra_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_curr_par2_t1 ~~ res2*extra_curr_par2_t1   # This allows residual variance on indicator X2 at T1
extra_curr_par3_t1 ~~ res3*extra_curr_par3_t1   # This allows residual variance on indicator X3 at T1

extra_curr_par1_t2 ~~ res1*extra_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_curr_par2_t2 ~~ res2*extra_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_curr_par3_t2 ~~ res3*extra_curr_par3_t2  # This allows residual variance on indicator X3 at T2

extra_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_01_t1 ~~ sa07_01_t1
sa07_02_t1 ~~ sa07_02_t1
sa07_03_t1 ~~ sa07_03_t1

sa07_01_t1 ~ 1
sa07_02_t1 ~ 1
sa07_03_t1 ~ 1
'
fit_mi_lcs_extra_curr_specif_hyp5 <- lavaan(mi_lcs_extra_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6877.957 6973.384 0.919 0.107 0.155
# parameters of interest
params_lcs_extra_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.048 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.472 NA NA
d_extra_1 ~1 0.533 0.298 0.767 1.989 4.454 0.000
extra_t1 ~1 3.032 2.944 3.119 5.098 67.832 0.000
d_extra_1 ~~ d_extra_1 0.064 0.032 0.096 0.894 3.960 0.000
d_extra_1 ~ extra_t1 -0.146 -0.222 -0.071 -0.325 -3.806 0.000
goals ~~ d_extra_1 -0.035 -0.092 0.023 -0.155 -1.181 0.238
goals ~~ goals 0.771 0.373 1.169 1.000 3.799 0.000

Correlation of specific, facet-level acceptance goals with extraversion change score (current-self) is not significantly different from zero, r = -0.155, p = 0.238.

6.5.1.4 Extraversion - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_extra_ideal_specif_hyp5 <- '
extra_t1 =~ 1*extra_ideal_par1_t1 + lamb2*extra_ideal_par2_t1 + lamb3*extra_ideal_par3_t1 # This specifies the measurement model for extra_t1 
extra_t2 =~ 1*extra_ideal_par1_t2 + lamb2*extra_ideal_par2_t2 + lamb3*extra_ideal_par3_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

goals =~ 1*sa07_01_t1 + sa07_02_t1 + sa07_03_t1 # latent acceptance goal variable (three facets per trait)

extra_t2 ~ 1*extra_t1     # This parameter regresses extra_t2 perfectly on extra_t1
d_extra_1 =~ 1*extra_t2   # This defines the latent change score factor as measured perfectly by scores on extra_t2
extra_t2 ~ 0*1            # This line constrains the intercept of extra_t2 to 0
extra_t2 ~~ 0*extra_t2    # This fixes the variance of extra_t2 to 0

d_extra_1 ~ 1              # This estimates the intercept of the change score 
extra_t1 ~ 1               # This estimates the intercept of extra_t1 
d_extra_1 ~~ d_extra_1     # This estimates the variance of the change scores 
extra_t1 ~~ extra_t1       # This estimates the variance of the extra_t1 
d_extra_1 ~ extra_t1       # This estimates the self-feedback parameter

d_extra_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

extra_ideal_par1_t1 ~~ extra_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
extra_ideal_par2_t1 ~~ extra_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
extra_ideal_par3_t1 ~~ extra_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

extra_ideal_par1_t1 ~~ res1*extra_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
extra_ideal_par2_t1 ~~ res2*extra_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
extra_ideal_par3_t1 ~~ res3*extra_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

extra_ideal_par1_t2 ~~ res1*extra_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
extra_ideal_par2_t2 ~~ res2*extra_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
extra_ideal_par3_t2 ~~ res3*extra_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

extra_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
extra_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
extra_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

extra_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
extra_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
extra_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_01_t1 ~~ sa07_01_t1
sa07_02_t1 ~~ sa07_02_t1
sa07_03_t1 ~~ sa07_03_t1

sa07_01_t1 ~ 1
sa07_02_t1 ~ 1
sa07_03_t1 ~ 1
'
fit_mi_lcs_extra_ideal_specif_hyp5 <- lavaan(mi_lcs_extra_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_extra_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6350.889 6446.316 0.994 0.019 0.045
# parameters of interest
params_lcs_extra_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "goals ~~ d_extra_1", "goals ~~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.984 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.635 NA NA
d_extra_1 ~1 0.688 0.100 1.277 2.664 2.294 0.022
extra_t1 ~1 3.689 3.625 3.753 9.207 113.364 0.000
d_extra_1 ~~ d_extra_1 0.061 0.023 0.098 0.911 3.176 0.001
d_extra_1 ~ extra_t1 -0.192 -0.350 -0.034 -0.298 -2.386 0.017
goals ~~ d_extra_1 -0.011 -0.058 0.037 -0.050 -0.443 0.658
goals ~~ goals 0.752 0.356 1.148 1.000 3.723 0.000

Correlation of specific, facet-level acceptance goals with extraversion change score (ideal-self) is not significantly different from zero, r = -0.05, p = 0.658.

6.5.1.5 Agreeableness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_hyp5 <- '
agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1
agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

agree_curr_par1_t1 ~~ agree_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_curr_par2_t1 ~~ agree_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_curr_par3_t1 ~~ agree_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1   # This allows residual variance on indicator X2 at T1
agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1   # This allows residual variance on indicator X3 at T1

agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2  # This allows residual variance on indicator X3 at T2

agree_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_agree_curr_hyp5 <- lavaan(mi_lcs_agree_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3727.854 3796.562 0.996 0.023 0.034
# parameters of interest
params_lcs_agree_curr_hyp5 <- broom::tidy(fit_mi_lcs_agree_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                     "d_agree_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                     "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 0.965 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.520 NA NA
d_agree_1 ~1 0.402 -0.030 0.833 1.994 1.823 0.068
agree_t1 ~1 3.461 3.398 3.524 9.256 107.763 0.000
d_agree_1 ~~ d_agree_1 0.039 0.010 0.068 0.959 2.637 0.008
d_agree_1 ~ agree_t1 -0.109 -0.232 0.015 -0.202 -1.724 0.085
d_agree_1 ~~ sa06_01_t1 -0.008 -0.032 0.017 -0.043 -0.605 0.545
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with agreeableness change score (current-self) is not significantly different from zero, r = -0.043, p = 0.545.

6.5.1.6 Agreeableness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_hyp5 <- '
agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

agree_ideal_par1_t1 ~~ agree_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_ideal_par2_t1 ~~ agree_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_ideal_par3_t1 ~~ agree_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

agree_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_agree_ideal_hyp5 <- lavaan(mi_lcs_agree_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3719.683 3788.391 0.99 0.039 0.046
# parameters of interest
params_lcs_agree_ideal_hyp5 <- broom::tidy(fit_mi_lcs_agree_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.012 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.621 NA NA
d_agree_1 ~1 0.762 0.297 1.226 2.771 3.213 0.001
agree_t1 ~1 3.778 3.705 3.851 8.441 101.667 0.000
d_agree_1 ~~ d_agree_1 0.068 0.040 0.095 0.894 4.740 0.000
d_agree_1 ~ agree_t1 -0.200 -0.319 -0.081 -0.326 -3.294 0.001
d_agree_1 ~~ sa06_01_t1 0.000 -0.036 0.036 -0.002 -0.020 0.984
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.002, p = 0.984.

6.5.1.7 Agreeableness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_curr_specif_hyp5 <- '
agree_t1 =~ 1*agree_curr_par1_t1 + lamb2*agree_curr_par2_t1 + lamb3*agree_curr_par3_t1 # This specifies the measurement model for agree_t1
agree_t2 =~ 1*agree_curr_par1_t2 + lamb2*agree_curr_par2_t2 + lamb3*agree_curr_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

agree_curr_par1_t1 ~~ agree_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_curr_par2_t1 ~~ agree_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_curr_par3_t1 ~~ agree_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_curr_par1_t1 ~~ res1*agree_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_curr_par2_t1 ~~ res2*agree_curr_par2_t1   # This allows residual variance on indicator X2 at T1
agree_curr_par3_t1 ~~ res3*agree_curr_par3_t1   # This allows residual variance on indicator X3 at T1

agree_curr_par1_t2 ~~ res1*agree_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_curr_par2_t2 ~~ res2*agree_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_curr_par3_t2 ~~ res3*agree_curr_par3_t2  # This allows residual variance on indicator X3 at T2

agree_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_04_t1 ~~ sa07_04_t1
sa07_05_t1 ~~ sa07_05_t1
sa07_06_t1 ~~ sa07_06_t1

sa07_04_t1 ~ 1
sa07_05_t1 ~ 1
sa07_06_t1 ~ 1
'
fit_mi_lcs_agree_curr_specif_hyp5 <- lavaan(mi_lcs_agree_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6064.576 6160.003 0.967 0.061 0.084
# parameters of interest
params_lcs_agree_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.000 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.563 NA NA
d_agree_1 ~1 0.572 0.128 1.016 2.760 2.526 0.012
agree_t1 ~1 3.462 3.399 3.525 9.401 107.744 0.000
d_agree_1 ~~ d_agree_1 0.040 0.011 0.069 0.921 2.675 0.007
d_agree_1 ~ agree_t1 -0.158 -0.286 -0.031 -0.281 -2.434 0.015
goals ~~ d_agree_1 -0.059 -0.107 -0.011 -0.309 -2.392 0.017
goals ~~ goals 0.919 0.632 1.207 1.000 6.262 0.000

Correlation of specific, facet-level acceptance goals with agreeableness change score (current-self) is significantly different from zero, r = -0.309, p = 0.017.

6.5.1.8 Agreeableness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_agree_ideal_specif_hyp5 <- '
agree_t1 =~ 1*agree_ideal_par1_t1 + lamb2*agree_ideal_par2_t1 + lamb3*agree_ideal_par3_t1 # This specifies the measurement model for agree_t1 
agree_t2 =~ 1*agree_ideal_par1_t2 + lamb2*agree_ideal_par2_t2 + lamb3*agree_ideal_par3_t2 # This specifies the measurement model for agree_t2 with the equality constrained factor loadings

goals =~ 1*sa07_04_t1 + sa07_05_t1 + sa07_06_t1 # latent acceptance goal variable (three facets per trait)

agree_t2 ~ 1*agree_t1     # This parameter regresses agree_t2 perfectly on agree_t1
d_agree_1 =~ 1*agree_t2   # This defines the latent change score factor as measured perfectly by scores on agree_t2
agree_t2 ~ 0*1            # This line constrains the intercept of agree_t2 to 0
agree_t2 ~~ 0*agree_t2    # This fixes the variance of agree_t2 to 0

d_agree_1 ~ 1              # This estimates the intercept of the change score 
agree_t1 ~ 1               # This estimates the intercept of agree_t1 
d_agree_1 ~~ d_agree_1     # This estimates the variance of the change scores 
agree_t1 ~~ agree_t1       # This estimates the variance of the agree_t1 
d_agree_1 ~ agree_t1       # This estimates the self-feedback parameter

d_agree_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

agree_ideal_par1_t1 ~~ agree_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
agree_ideal_par2_t1 ~~ agree_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
agree_ideal_par3_t1 ~~ agree_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

agree_ideal_par1_t1 ~~ res1*agree_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
agree_ideal_par2_t1 ~~ res2*agree_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
agree_ideal_par3_t1 ~~ res3*agree_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

agree_ideal_par1_t2 ~~ res1*agree_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
agree_ideal_par2_t2 ~~ res2*agree_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
agree_ideal_par3_t2 ~~ res3*agree_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

agree_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
agree_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
agree_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

agree_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
agree_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
agree_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_04_t1 ~~ sa07_04_t1
sa07_05_t1 ~~ sa07_05_t1
sa07_06_t1 ~~ sa07_06_t1

sa07_04_t1 ~ 1
sa07_05_t1 ~ 1
sa07_06_t1 ~ 1
'
fit_mi_lcs_agree_ideal_specif_hyp5 <- lavaan(mi_lcs_agree_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_agree_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6067.194 6162.622 0.987 0.04 0.052
# parameters of interest
params_lcs_agree_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "goals ~~ d_agree_1", "goals ~~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.018 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.630 NA NA
d_agree_1 ~1 0.794 0.317 1.271 2.874 3.263 0.001
agree_t1 ~1 3.778 3.705 3.851 8.461 101.680 0.000
d_agree_1 ~~ d_agree_1 0.068 0.040 0.096 0.886 4.756 0.000
d_agree_1 ~ agree_t1 -0.209 -0.331 -0.086 -0.337 -3.337 0.001
goals ~~ d_agree_1 -0.024 -0.069 0.020 -0.100 -1.087 0.277
goals ~~ goals 0.884 0.564 1.204 1.000 5.417 0.000

Correlation of specific, facet-level acceptance goals with agreeableness change score (ideal-self) is not significantly different from zero, r = -0.1, p = 0.277.

6.5.1.9 Conscientiousness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_hyp5 <- '
consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

consc_curr_par1_t1 ~~ consc_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_curr_par2_t1 ~~ consc_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_curr_par3_t1 ~~ consc_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1   # This allows residual variance on indicator X2 at T1
consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1   # This allows residual variance on indicator X3 at T1

consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2  # This allows residual variance on indicator X3 at T2

consc_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_consc_curr_hyp5 <- lavaan(mi_lcs_consc_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3974.434 4043.142 0.997 0.026 0.032
# parameters of interest
params_lcs_consc_curr_hyp5 <- broom::tidy(fit_mi_lcs_consc_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                     "d_consc_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                     "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.986 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.514 NA NA
d_consc_1 ~1 0.486 0.243 0.729 1.394 3.921 0.000
consc_t1 ~1 3.380 3.299 3.461 5.058 81.598 0.000
d_consc_1 ~~ d_consc_1 0.115 0.078 0.152 0.945 6.045 0.000
d_consc_1 ~ consc_t1 -0.122 -0.191 -0.053 -0.234 -3.457 0.001
d_consc_1 ~~ sa06_01_t1 -0.031 -0.075 0.012 -0.104 -1.418 0.156
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with conscientiousness change score (current-self) is not significantly different from zero, r = -0.104, p = 0.156.

6.5.1.10 Conscientiousness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_hyp5 <- '
consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1
consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

consc_ideal_par1_t1 ~~ consc_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_ideal_par2_t1 ~~ consc_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_ideal_par3_t1 ~~ consc_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

consc_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_consc_ideal_hyp5 <- lavaan(mi_lcs_consc_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3299.599 3368.307 0.994 0.031 0.041
# parameters of interest
params_lcs_consc_ideal_hyp5 <- broom::tidy(fit_mi_lcs_consc_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.036 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.744 NA NA
d_consc_1 ~1 1.294 0.702 1.887 4.101 4.280 0.000
consc_t1 ~1 4.339 4.279 4.400 9.869 141.201 0.000
d_consc_1 ~~ d_consc_1 0.083 0.050 0.116 0.834 4.882 0.000
d_consc_1 ~ consc_t1 -0.292 -0.425 -0.160 -0.407 -4.320 0.000
d_consc_1 ~~ sa06_01_t1 0.017 -0.015 0.049 0.065 1.044 0.297
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with conscientiousness change score (ideal-self) is not significantly different from zero, r = 0.065, p = 0.297.

6.5.1.11 Conscientiousness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_curr_specif_hyp5 <- '
consc_t1 =~ 1*consc_curr_par1_t1 + lamb2*consc_curr_par2_t1 + lamb3*consc_curr_par3_t1 # This specifies the measurement model for consc_t1 
consc_t2 =~ 1*consc_curr_par1_t2 + lamb2*consc_curr_par2_t2 + lamb3*consc_curr_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

consc_curr_par1_t1 ~~ consc_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_curr_par2_t1 ~~ consc_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_curr_par3_t1 ~~ consc_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_curr_par1_t1 ~~ res1*consc_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_curr_par2_t1 ~~ res2*consc_curr_par2_t1   # This allows residual variance on indicator X2 at T1
consc_curr_par3_t1 ~~ res3*consc_curr_par3_t1   # This allows residual variance on indicator X3 at T1

consc_curr_par1_t2 ~~ res1*consc_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_curr_par2_t2 ~~ res2*consc_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_curr_par3_t2 ~~ res3*consc_curr_par3_t2  # This allows residual variance on indicator X3 at T2

consc_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_07_t1 ~~ sa07_07_t1
sa07_08_t1 ~~ sa07_08_t1
sa07_09_t1 ~~ sa07_09_t1

sa07_07_t1 ~ 1
sa07_08_t1 ~ 1
sa07_09_t1 ~ 1
'
fit_mi_lcs_consc_curr_specif_hyp5 <- lavaan(mi_lcs_consc_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6378.707 6474.135 0.921 0.125 0.214
# parameters of interest
params_lcs_consc_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.018 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.548 NA NA
d_consc_1 ~1 0.621 0.325 0.918 1.726 4.102 0.000
consc_t1 ~1 3.380 3.299 3.461 5.051 81.584 0.000
d_consc_1 ~~ d_consc_1 0.118 0.081 0.155 0.909 6.204 0.000
d_consc_1 ~ consc_t1 -0.162 -0.247 -0.077 -0.301 -3.736 0.000
goals ~~ d_consc_1 -0.062 -0.132 0.009 -0.167 -1.707 0.088
goals ~~ goals 1.152 0.853 1.450 1.000 7.563 0.000

The correlation of specific, facet-level acceptance goals with the conscientiousness change score (current-self) is not significantly different from zero, r = -0.167, p = 0.088.

6.5.1.12 Conscientiousness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_consc_ideal_specif_hyp5 <- '
consc_t1 =~ 1*consc_ideal_par1_t1 + lamb2*consc_ideal_par2_t1 + lamb3*consc_ideal_par3_t1 # This specifies the measurement model for consc_t1
consc_t2 =~ 1*consc_ideal_par1_t2 + lamb2*consc_ideal_par2_t2 + lamb3*consc_ideal_par3_t2 # This specifies the measurement model for consc_t2 with the equality constrained factor loadings

goals =~ 1*sa07_07_t1 + sa07_08_t1 + sa07_09_t1 # latent acceptance goal variable (three facets per trait)

consc_t2 ~ 1*consc_t1     # This parameter regresses consc_t2 perfectly on consc_t1
d_consc_1 =~ 1*consc_t2   # This defines the latent change score factor as measured perfectly by scores on consc_t2
consc_t2 ~ 0*1            # This line constrains the intercept of consc_t2 to 0
consc_t2 ~~ 0*consc_t2    # This fixes the variance of consc_t2 to 0

d_consc_1 ~ 1              # This estimates the intercept of the change score 
consc_t1 ~ 1               # This estimates the intercept of consc_t1 
d_consc_1 ~~ d_consc_1     # This estimates the variance of the change scores 
consc_t1 ~~ consc_t1       # This estimates the variance of the consc_t1 
d_consc_1 ~ consc_t1       # This estimates the self-feedback parameter

d_consc_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

consc_ideal_par1_t1 ~~ consc_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
consc_ideal_par2_t1 ~~ consc_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
consc_ideal_par3_t1 ~~ consc_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

consc_ideal_par1_t1 ~~ res1*consc_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
consc_ideal_par2_t1 ~~ res2*consc_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
consc_ideal_par3_t1 ~~ res3*consc_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

consc_ideal_par1_t2 ~~ res1*consc_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
consc_ideal_par2_t2 ~~ res2*consc_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
consc_ideal_par3_t2 ~~ res3*consc_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

consc_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
consc_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
consc_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

consc_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
consc_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
consc_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_07_t1 ~~ sa07_07_t1
sa07_08_t1 ~~ sa07_08_t1
sa07_09_t1 ~~ sa07_09_t1

sa07_07_t1 ~ 1
sa07_08_t1 ~ 1
sa07_09_t1 ~ 1
'
fit_mi_lcs_consc_ideal_specif_hyp5 <- lavaan(mi_lcs_consc_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_consc_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 5701.826 5797.254 1 0 0.032
# parameters of interest
params_lcs_consc_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "goals ~~ d_consc_1", "goals ~~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.037 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.744 NA NA
d_consc_1 ~1 1.294 0.697 1.891 4.095 4.246 0.000
consc_t1 ~1 4.339 4.279 4.400 9.859 141.196 0.000
d_consc_1 ~~ d_consc_1 0.083 0.050 0.117 0.834 4.863 0.000
d_consc_1 ~ consc_t1 -0.292 -0.426 -0.159 -0.407 -4.288 0.000
goals ~~ d_consc_1 -0.050 -0.098 -0.002 -0.162 -2.036 0.042
goals ~~ goals 1.135 0.838 1.433 1.000 7.475 0.000

The correlation of specific, facet-level acceptance goals with the conscientiousness change score (ideal-self) is (barely) significantly different from zero, r = -0.162, p = 0.042.

6.5.1.13 Neuroticism - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_hyp5 <- '
neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

neuro_curr_par1_t1 ~~ neuro_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_curr_par2_t1 ~~ neuro_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_curr_par3_t1 ~~ neuro_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_neuro_curr_hyp5 <- lavaan(mi_lcs_neuro_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 4184.13 4252.838 0.996 0.033 0.077
# parameters of interest
params_lcs_neuro_curr_hyp5 <- broom::tidy(fit_mi_lcs_neuro_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                     "d_neuro_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                     "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.985 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.458 NA NA
d_neuro_1 ~1 0.124 -0.080 0.328 0.334 1.195 0.232
neuro_t1 ~1 3.250 3.158 3.342 4.068 68.935 0.000
d_neuro_1 ~~ d_neuro_1 0.133 0.090 0.175 0.960 6.079 0.000
d_neuro_1 ~ neuro_t1 -0.093 -0.154 -0.031 -0.199 -2.957 0.003
d_neuro_1 ~~ sa06_01_t1 -0.023 -0.065 0.019 -0.071 -1.082 0.279
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with neuroticism change score (current-self) is not significantly different from zero, r = -0.071, p = 0.279.

6.5.1.14 Neuroticism - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_hyp5 <- '
neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_hyp5 <- lavaan(mi_lcs_neuro_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3513.93 3582.638 0.987 0.042 0.06
# parameters of interest
params_lcs_neuro_ideal_hyp5 <- broom::tidy(fit_mi_lcs_neuro_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.071 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.705 NA NA
d_neuro_1 ~1 0.485 0.271 0.699 1.382 4.451 0.000
neuro_t1 ~1 1.751 1.685 1.818 3.285 51.768 0.000
d_neuro_1 ~~ d_neuro_1 0.101 0.057 0.144 0.818 4.565 0.000
d_neuro_1 ~ neuro_t1 -0.281 -0.412 -0.149 -0.427 -4.186 0.000
d_neuro_1 ~~ sa06_01_t1 -0.016 -0.061 0.030 -0.056 -0.681 0.496
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with neuroticism change score (ideal-self) is not significantly different from zero, r = -0.056, p = 0.496.

6.5.1.15 Neuroticism - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_curr_specif_hyp5 <- '
neuro_t1 =~ 1*neuro_curr_par1_t1 + lamb2*neuro_curr_par2_t1 + lamb3*neuro_curr_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_curr_par1_t2 + lamb2*neuro_curr_par2_t2 + lamb3*neuro_curr_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

neuro_curr_par1_t1 ~~ neuro_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_curr_par2_t1 ~~ neuro_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_curr_par3_t1 ~~ neuro_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_curr_par1_t1 ~~ res1*neuro_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_curr_par2_t1 ~~ res2*neuro_curr_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_curr_par3_t1 ~~ res3*neuro_curr_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_curr_par1_t2 ~~ res1*neuro_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_curr_par2_t2 ~~ res2*neuro_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_curr_par3_t2 ~~ res3*neuro_curr_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_10_t1 ~~ sa07_10_t1
sa07_11_t1 ~~ sa07_11_t1
sa07_12_t1 ~~ sa07_12_t1

sa07_10_t1 ~ 1
sa07_11_t1 ~ 1
sa07_12_t1 ~ 1
'
fit_mi_lcs_neuro_curr_specif_hyp5 <- lavaan(mi_lcs_neuro_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6594.582 6690.01 0.955 0.097 0.184
# parameters of interest
params_lcs_neuro_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.021 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.492 NA NA
d_neuro_1 ~1 0.266 0.034 0.499 0.692 2.248 0.025
neuro_t1 ~1 3.250 3.158 3.343 4.069 68.935 0.000
d_neuro_1 ~~ d_neuro_1 0.136 0.093 0.179 0.920 6.170 0.000
d_neuro_1 ~ neuro_t1 -0.137 -0.207 -0.067 -0.283 -3.826 0.000
goals ~~ d_neuro_1 0.066 0.005 0.127 0.186 2.121 0.034
goals ~~ goals 0.932 0.615 1.248 1.000 5.774 0.000

Correlation of specific, facet-level acceptance goals with neuroticism change score (current-self) is (barely) significantly different from zero, r = 0.186, p = 0.034.

6.5.1.16 Neuroticism - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_neuro_ideal_specif_hyp5 <- '
neuro_t1 =~ 1*neuro_ideal_par1_t1 + lamb2*neuro_ideal_par2_t1 + lamb3*neuro_ideal_par3_t1 # This specifies the measurement model for neuro_t1 
neuro_t2 =~ 1*neuro_ideal_par1_t2 + lamb2*neuro_ideal_par2_t2 + lamb3*neuro_ideal_par3_t2 # This specifies the measurement model for neuro_t2 with the equality constrained factor loadings

goals =~ 1*sa07_10_t1 + sa07_11_t1 + sa07_12_t1 # latent acceptance goal variable (three facets per trait)

neuro_t2 ~ 1*neuro_t1     # This parameter regresses neuro_t2 perfectly on neuro_t1
d_neuro_1 =~ 1*neuro_t2   # This defines the latent change score factor as measured perfectly by scores on neuro_t2
neuro_t2 ~ 0*1            # This line constrains the intercept of neuro_t2 to 0
neuro_t2 ~~ 0*neuro_t2    # This fixes the variance of neuro_t2 to 0

d_neuro_1 ~ 1              # This estimates the intercept of the change score 
neuro_t1 ~ 1               # This estimates the intercept of neuro_t1 
d_neuro_1 ~~ d_neuro_1     # This estimates the variance of the change scores 
neuro_t1 ~~ neuro_t1       # This estimates the variance of the neuro_t1 
d_neuro_1 ~ neuro_t1       # This estimates the self-feedback parameter

d_neuro_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

neuro_ideal_par1_t1 ~~ neuro_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
neuro_ideal_par2_t1 ~~ neuro_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
neuro_ideal_par3_t1 ~~ neuro_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

neuro_ideal_par1_t1 ~~ res1*neuro_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
neuro_ideal_par2_t1 ~~ res2*neuro_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
neuro_ideal_par3_t1 ~~ res3*neuro_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

neuro_ideal_par1_t2 ~~ res1*neuro_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
neuro_ideal_par2_t2 ~~ res2*neuro_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
neuro_ideal_par3_t2 ~~ res3*neuro_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

neuro_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
neuro_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
neuro_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

neuro_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
neuro_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
neuro_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_10_t1 ~~ sa07_10_t1
sa07_11_t1 ~~ sa07_11_t1
sa07_12_t1 ~~ sa07_12_t1

sa07_10_t1 ~ 1
sa07_11_t1 ~ 1
sa07_12_t1 ~ 1
'
fit_mi_lcs_neuro_ideal_specif_hyp5 <- lavaan(mi_lcs_neuro_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_neuro_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 5928.655 6024.083 0.99 0.033 0.051
# parameters of interest
params_lcs_neuro_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "goals ~~ d_neuro_1", "goals ~~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.066 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.699 NA NA
d_neuro_1 ~1 0.475 0.260 0.690 1.359 4.326 0.000
neuro_t1 ~1 1.751 1.685 1.818 3.282 51.764 0.000
d_neuro_1 ~~ d_neuro_1 0.101 0.057 0.144 0.824 4.553 0.000
d_neuro_1 ~ neuro_t1 -0.275 -0.407 -0.143 -0.420 -4.075 0.000
goals ~~ d_neuro_1 0.003 -0.046 0.052 0.009 0.116 0.908
goals ~~ goals 0.939 0.618 1.260 1.000 5.732 0.000

The correlation of specific, facet-level acceptance goals with the neuroticism change score (ideal-self) is not significantly different from zero, r = 0.009, p = 0.908.

6.5.1.17 Openness - current-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_hyp5 <- '
openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1
openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

openn_curr_par1_t1 ~~ openn_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_curr_par2_t1 ~~ openn_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_curr_par3_t1 ~~ openn_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1   # This allows residual variance on indicator X2 at T1
openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1   # This allows residual variance on indicator X3 at T1

openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2  # This allows residual variance on indicator X3 at T2

openn_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_openn_curr_hyp5 <- lavaan(mi_lcs_openn_curr_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
summary(fit_mi_lcs_openn_curr_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3881.553 3950.261 1 0 0.031
# parameters of interest
params_lcs_openn_curr_hyp5 <- broom::tidy(fit_mi_lcs_openn_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                     "d_openn_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                     "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.018 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.405 NA NA
d_openn_1 ~1 0.422 0.171 0.672 1.764 3.301 0.001
openn_t1 ~1 3.564 3.489 3.639 5.935 93.254 0.000
d_openn_1 ~~ d_openn_1 0.054 0.025 0.082 0.941 3.656 0.000
d_openn_1 ~ openn_t1 -0.097 -0.164 -0.030 -0.244 -2.820 0.005
d_openn_1 ~~ sa06_01_t1 -0.014 -0.048 0.020 -0.067 -0.794 0.427
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with openness change score (current-self) is not significantly different from zero, r = -0.067, p = 0.427.

6.5.1.18 Openness - ideal-self: general acceptance goals

Fit model:

Show the code
# adding correlation with manifest acceptance goal variable to the latent change score model:
# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_hyp5 <- '
openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ sa06_01_t1     # estimates the covariance/correlation with acceptance goal variable

openn_ideal_par1_t1 ~~ openn_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_ideal_par2_t1 ~~ openn_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_ideal_par3_t1 ~~ openn_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

openn_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa06_01_t1 ~~ sa06_01_t1
sa06_01_t1 ~ 1
'
fit_mi_lcs_openn_ideal_hyp5 <- lavaan(mi_lcs_openn_ideal_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing="fiml")
summary(fit_mi_lcs_openn_ideal_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 18 3782.839 3851.547 0.968 0.063 0.063
# parameters of interest
params_lcs_openn_ideal_hyp5 <- broom::tidy(fit_mi_lcs_openn_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.033 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.711 NA NA
d_openn_1 ~1 1.063 0.582 1.544 5.008 4.331 0.000
openn_t1 ~1 3.907 3.848 3.966 12.679 130.315 0.000
d_openn_1 ~~ d_openn_1 0.038 0.017 0.059 0.848 3.590 0.000
d_openn_1 ~ openn_t1 -0.268 -0.389 -0.147 -0.390 -4.339 0.000
d_openn_1 ~~ sa06_01_t1 -0.025 -0.050 0.000 -0.143 -1.941 0.052
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with openness change score (ideal-self) is not significantly different from zero, r = -0.143, p = 0.052.

6.5.1.19 Openness - current-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_curr_specif_hyp5 <- '
openn_t1 =~ 1*openn_curr_par1_t1 + lamb2*openn_curr_par2_t1 + lamb3*openn_curr_par3_t1 # This specifies the measurement model for openn_t1
openn_t2 =~ 1*openn_curr_par1_t2 + lamb2*openn_curr_par2_t2 + lamb3*openn_curr_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

openn_curr_par1_t1 ~~ openn_curr_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_curr_par2_t1 ~~ openn_curr_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_curr_par3_t1 ~~ openn_curr_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_curr_par1_t1 ~~ res1*openn_curr_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_curr_par2_t1 ~~ res2*openn_curr_par2_t1   # This allows residual variance on indicator X2 at T1
openn_curr_par3_t1 ~~ res3*openn_curr_par3_t1   # This allows residual variance on indicator X3 at T1

openn_curr_par1_t2 ~~ res1*openn_curr_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_curr_par2_t2 ~~ res2*openn_curr_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_curr_par3_t2 ~~ res3*openn_curr_par3_t2  # This allows residual variance on indicator X3 at T2

openn_curr_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_curr_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_curr_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_curr_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_curr_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_curr_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_13_t1 ~~ sa07_13_t1
sa07_14_t1 ~~ sa07_14_t1
sa07_15_t1 ~~ sa07_15_t1

sa07_13_t1 ~ 1
sa07_14_t1 ~ 1
sa07_15_t1 ~ 1
'
fit_mi_lcs_openn_curr_specif_hyp5 <- lavaan(mi_lcs_openn_curr_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')

summary(fit_mi_lcs_openn_curr_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6103.116 6198.544 0.95 0.096 0.185
# parameters of interest
params_lcs_openn_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.042 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.428 NA NA
d_openn_1 ~1 0.516 0.218 0.814 2.092 3.395 0.001
openn_t1 ~1 3.564 3.489 3.639 5.937 93.257 0.000
d_openn_1 ~~ d_openn_1 0.055 0.026 0.084 0.910 3.732 0.000
d_openn_1 ~ openn_t1 -0.123 -0.206 -0.041 -0.301 -2.938 0.003
goals ~~ d_openn_1 -0.024 -0.067 0.019 -0.133 -1.099 0.272
goals ~~ goals 0.599 0.383 0.815 1.000 5.436 0.000

Correlation of specific, facet-level acceptance goals with openness change score (current-self) is not significantly different from zero, r = -0.133, p = 0.272.

6.5.1.20 Openness - ideal-self: specific, facet-level acceptance goals

Fit model:

Show the code
# adding correlation with latent (made up of the three facets) acceptance goal variable to the latent change score model:

# Fit the multiple indicator univariate latent change score model
mi_lcs_openn_ideal_specif_hyp5 <- '
openn_t1 =~ 1*openn_ideal_par1_t1 + lamb2*openn_ideal_par2_t1 + lamb3*openn_ideal_par3_t1 # This specifies the measurement model for openn_t1 
openn_t2 =~ 1*openn_ideal_par1_t2 + lamb2*openn_ideal_par2_t2 + lamb3*openn_ideal_par3_t2 # This specifies the measurement model for openn_t2 with the equality constrained factor loadings

goals =~ 1*sa07_13_t1 + sa07_14_t1 + sa07_15_t1 # latent acceptance goal variable (three facets per trait)

openn_t2 ~ 1*openn_t1     # This parameter regresses openn_t2 perfectly on openn_t1
d_openn_1 =~ 1*openn_t2   # This defines the latent change score factor as measured perfectly by scores on openn_t2
openn_t2 ~ 0*1            # This line constrains the intercept of openn_t2 to 0
openn_t2 ~~ 0*openn_t2    # This fixes the variance of openn_t2 to 0

d_openn_1 ~ 1              # This estimates the intercept of the change score 
openn_t1 ~ 1               # This estimates the intercept of openn_t1 
d_openn_1 ~~ d_openn_1     # This estimates the variance of the change scores 
openn_t1 ~~ openn_t1       # This estimates the variance of the openn_t1 
d_openn_1 ~ openn_t1       # This estimates the self-feedback parameter

d_openn_1 ~~ goals     # estimates the covariance/correlation with the (latent) acceptance goal variable
goals ~ 0*1            # This fixes the intercept of the (latent) acceptance goal variable to 0
goals ~~ goals         # This estimates the variance of the (latent) acceptance goal variable

openn_ideal_par1_t1 ~~ openn_ideal_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
openn_ideal_par2_t1 ~~ openn_ideal_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
openn_ideal_par3_t1 ~~ openn_ideal_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

openn_ideal_par1_t1 ~~ res1*openn_ideal_par1_t1   # This allows residual variance on indicator X1 at T1 
openn_ideal_par2_t1 ~~ res2*openn_ideal_par2_t1   # This allows residual variance on indicator X2 at T1
openn_ideal_par3_t1 ~~ res3*openn_ideal_par3_t1   # This allows residual variance on indicator X3 at T1

openn_ideal_par1_t2 ~~ res1*openn_ideal_par1_t2  # This allows residual variance on indicator X1 at T2 
openn_ideal_par2_t2 ~~ res2*openn_ideal_par2_t2  # This allows residual variance on indicator X2 at T2 
openn_ideal_par3_t2 ~~ res3*openn_ideal_par3_t2  # This allows residual variance on indicator X3 at T2

openn_ideal_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
openn_ideal_par2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
openn_ideal_par3_t1 ~ m3*1     # This estimates the intercept of X3 at T1

openn_ideal_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
openn_ideal_par2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
openn_ideal_par3_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa07_13_t1 ~~ sa07_13_t1
sa07_14_t1 ~~ sa07_14_t1
sa07_15_t1 ~~ sa07_15_t1

sa07_13_t1 ~ 1
sa07_14_t1 ~ 1
sa07_15_t1 ~ 1
'
fit_mi_lcs_openn_ideal_specif_hyp5 <- lavaan(mi_lcs_openn_ideal_specif_hyp5, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing = "fiml")
summary(fit_mi_lcs_openn_ideal_specif_hyp5, fit.measures=TRUE, standardized=TRUE, rsquare=F)

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 25 6005.375 6100.803 0.96 0.069 0.107
# parameters of interest
params_lcs_openn_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "goals ~~ d_openn_1", "goals ~~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.069 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.769 NA NA
d_openn_1 ~1 1.271 0.770 1.771 5.780 4.977 0.000
openn_t1 ~1 3.907 3.848 3.966 12.792 130.356 0.000
d_openn_1 ~~ d_openn_1 0.039 0.018 0.060 0.800 3.620 0.000
d_openn_1 ~ openn_t1 -0.321 -0.448 -0.195 -0.447 -4.977 0.000
goals ~~ d_openn_1 -0.024 -0.046 -0.002 -0.157 -2.101 0.036
goals ~~ goals 0.600 0.384 0.815 1.000 5.454 0.000

The correlation of specific, facet-level acceptance goals with the openness change score (ideal-self) is (barely) significantly different from zero, r = -0.157, p = 0.036.

6.5.2 Big Five facets

Run models for all facets with a template & loop:

Show the code
# create template:
facet_template <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1       # This estimates the variance of facet_t1 
d_facet_1 ~ facet_t1       # This estimates the self-feedback parameter

d_facet_1 ~~ ind_goal     # estimates the covariance/correlation with acceptance goal variable

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # loop across 2 BFI versions (combined pre&post current/ideal)
  for (j in 5:length(bfi_versions)) {
    items = paste0(bfi_versions[[j]], item_nrs)
    # loop across 2 different goal operationalizations (sa06_01_t1 & sa07_XX_t1)
    for (k in 1:2) {
      if (k==1) {
        goal_op = "sa06_01_t1"
      } else{
        goal_op = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
      }
      template_filled <- str_replace_all(facet_template, 
                                         c("facet" = short_name,
                                           "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                           "ind_goal" = goal_op))
      facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa, estimator='mlr', fixed.x=FALSE, missing='fiml')
      # save to environment
      if (k==1) {
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp5")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_hyp5")), facet_model_fit))
      } else{
        eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), template_filled))
        eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                       str_sub(names(bfi_versions)[j], 6), "_specif_hyp5")), facet_model_fit))
      }
    }
  }
}  
6.5.2.1 Sociability - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7725.646 7809.623 0.953 0.078 0.05
# parameters of interest
params_lcs_socia_curr_hyp5 <- broom::tidy(fit_mi_lcs_socia_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.073 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.475 NA NA
d_socia_1 ~1 0.629 0.427 0.831 1.447 6.095 0.000
socia_t1 ~1 2.858 2.724 2.992 2.912 41.737 0.000
d_socia_1 ~~ d_socia_1 0.163 0.083 0.243 0.864 3.990 0.000
d_socia_1 ~ socia_t1 -0.163 -0.229 -0.098 -0.369 -4.909 0.000
d_socia_1 ~~ sa06_01_t1 0.032 -0.040 0.104 0.090 0.879 0.379
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

The correlation of the general acceptance goal with the sociability change score (current-self) is not significantly different from zero, r = 0.09, p = 0.379.

6.5.2.2 Sociability - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7789.622 7873.599 0.88 0.064 0.071
# parameters of interest
params_lcs_socia_ideal_hyp5 <- broom::tidy(fit_mi_lcs_socia_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.888 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.475 NA NA
d_socia_1 ~1 -0.026 -1.165 1.113 -0.142 -0.045 0.964
socia_t1 ~1 4.226 4.145 4.306 12.175 102.771 0.000
d_socia_1 ~~ d_socia_1 0.034 -0.021 0.090 1.000 1.220 0.222
d_socia_1 ~ socia_t1 -0.008 -0.274 0.257 -0.015 -0.061 0.951
d_socia_1 ~~ sa06_01_t1 -0.020 -0.071 0.032 -0.118 -0.742 0.458
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with sociability change score (ideal-self) is not significantly different from zero, r = -0.118, p = 0.458.

6.5.2.3 Sociability - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8003.301 8087.277 0.907 0.112 0.136
# parameters of interest
params_lcs_socia_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.099 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.505 NA NA
d_socia_1 ~1 0.707 0.482 0.933 1.573 6.145 0.000
socia_t1 ~1 2.858 2.724 2.993 2.919 41.771 0.000
d_socia_1 ~~ d_socia_1 0.167 0.086 0.248 0.826 4.043 0.000
d_socia_1 ~ socia_t1 -0.192 -0.265 -0.119 -0.417 -5.145 0.000
d_socia_1 ~~ sa07_01_t1 -0.066 -0.166 0.035 -0.119 -1.284 0.199
sa07_01_t1 ~~ sa07_01_t1 1.826 1.634 2.019 1.000 18.622 0.000

Correlation of specific, facet-level acceptance goals with sociability change score (current-self) is not significantly different from zero, r = -0.119, p = 0.199.

6.5.2.4 Sociability - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8065.135 8149.111 0.922 0.051 0.06
# parameters of interest
params_lcs_socia_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", # acceptance goals
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.888 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.468 NA NA
d_socia_1 ~1 -0.037 -1.134 1.060 -0.203 -0.066 0.947
socia_t1 ~1 4.225 4.144 4.305 12.225 102.942 0.000
d_socia_1 ~~ d_socia_1 0.033 -0.021 0.088 1.000 1.196 0.232
d_socia_1 ~ socia_t1 -0.005 -0.261 0.251 -0.010 -0.041 0.967
d_socia_1 ~~ sa07_01_t1 -0.059 -0.125 0.007 -0.239 -1.742 0.082
sa07_01_t1 ~~ sa07_01_t1 1.826 1.634 2.019 1.000 18.622 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-self) is not significantly different from zero, r = -0.239, p = 0.082.

6.5.2.5 Assertiveness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7839.177 7923.154 0.992 0.028 0.035
# parameters of interest
params_lcs_asser_curr_hyp5 <- broom::tidy(fit_mi_lcs_asser_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.996 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.373 NA NA
d_asser_1 ~1 0.260 0.026 0.494 0.994 2.179 0.029
asser_t1 ~1 3.105 2.986 3.224 4.442 51.156 0.000
d_asser_1 ~~ d_asser_1 0.066 0.020 0.113 0.968 2.803 0.005
d_asser_1 ~ asser_t1 -0.067 -0.143 0.010 -0.178 -1.713 0.087
d_asser_1 ~~ sa06_01_t1 -0.009 -0.050 0.031 -0.041 -0.457 0.648
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with assertiveness change score (current-self) is not significantly different from zero, r = -0.041, p = 0.648.

6.5.2.6 Assertiveness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7719.373 7803.349 0.972 0.033 0.057
# parameters of interest
params_lcs_asser_ideal_hyp5 <- broom::tidy(fit_mi_lcs_asser_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.935 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.435 NA NA
d_asser_1 ~1 0.124 -0.816 1.065 0.751 0.259 0.796
asser_t1 ~1 4.134 4.043 4.224 11.645 89.478 0.000
d_asser_1 ~~ d_asser_1 0.027 -0.011 0.066 0.994 1.378 0.168
d_asser_1 ~ asser_t1 -0.036 -0.260 0.188 -0.077 -0.315 0.753
d_asser_1 ~~ sa06_01_t1 0.035 -0.003 0.073 0.240 1.826 0.068
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.24, p = 0.068.

6.5.2.7 Assertiveness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8102.542 8186.519 0.958 0.063 0.087
# parameters of interest
params_lcs_asser_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.998 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.374 NA NA
d_asser_1 ~1 0.265 0.023 0.508 1.011 2.145 0.032
asser_t1 ~1 3.105 2.986 3.224 4.433 51.158 0.000
d_asser_1 ~~ d_asser_1 0.067 0.020 0.113 0.967 2.798 0.005
d_asser_1 ~ asser_t1 -0.068 -0.147 0.011 -0.182 -1.686 0.092
d_asser_1 ~~ sa07_02_t1 -0.006 -0.078 0.066 -0.018 -0.164 0.870
sa07_02_t1 ~~ sa07_02_t1 1.747 1.573 1.921 1.000 19.717 0.000

Correlation of specific, facet-level acceptance goals with assertiveness change score (current-self) is not significantly different from zero, r = -0.018, p = 0.87.

6.5.2.8 Assertiveness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7981.585 8065.561 1 0 0.045
# parameters of interest
params_lcs_asser_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", # acceptance goals
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.930 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.436 NA NA
d_asser_1 ~1 0.106 -0.835 1.047 0.636 0.221 0.825
asser_t1 ~1 4.134 4.044 4.225 11.625 89.537 0.000
d_asser_1 ~~ d_asser_1 0.028 -0.011 0.066 0.995 1.401 0.161
d_asser_1 ~ asser_t1 -0.032 -0.256 0.192 -0.068 -0.278 0.781
d_asser_1 ~~ sa07_02_t1 0.060 -0.005 0.125 0.273 1.817 0.069
sa07_02_t1 ~~ sa07_02_t1 1.747 1.573 1.921 1.000 19.717 0.000

Correlation of specific, facet-level acceptance goals with assertiveness change score (ideal-self) is not significantly different from zero, r = 0.273, p = 0.069.

6.5.2.9 Energy - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7987.215 8071.191 0.971 0.047 0.055
# parameters of interest
params_lcs_energ_curr_hyp5 <- broom::tidy(fit_mi_lcs_energ_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.019 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.488 NA NA
d_energ_1 ~1 0.310 0.057 0.563 1.692 2.405 0.016
energ_t1 ~1 2.676 2.563 2.788 6.989 46.612 0.000
d_energ_1 ~~ d_energ_1 0.031 0.001 0.061 0.922 2.042 0.041
d_energ_1 ~ energ_t1 -0.133 -0.228 -0.039 -0.279 -2.763 0.006
d_energ_1 ~~ sa06_01_t1 0.003 -0.021 0.027 0.019 0.245 0.806
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with energy change score (current-self) is not significantly different from zero, r = 0.019, p = 0.806.

6.5.2.10 Energy - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7431.315 7515.291 0.891 0.057 0.066
# parameters of interest
params_lcs_energ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_energ_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.009 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.780 NA NA
d_energ_1 ~1 0.685 0.289 1.082 4.047 3.385 0.001
energ_t1 ~1 2.221 2.105 2.338 10.133 37.361 0.000
d_energ_1 ~~ d_energ_1 0.024 -0.014 0.063 0.841 1.225 0.221
d_energ_1 ~ energ_t1 -0.308 -0.488 -0.127 -0.398 -3.345 0.001
d_energ_1 ~~ sa06_01_t1 -0.009 -0.033 0.014 -0.067 -0.781 0.435
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with energy change score (ideal-self) is not significantly different from zero, r = -0.067, p = 0.435.

6.5.2.11 Energy - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8267.686 8351.662 0.903 0.09 0.113
# parameters of interest
params_lcs_energ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.049 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.523 NA NA
d_energ_1 ~1 0.407 0.137 0.678 2.131 2.952 0.003
energ_t1 ~1 2.676 2.563 2.789 6.987 46.602 0.000
d_energ_1 ~~ d_energ_1 0.032 0.002 0.063 0.884 2.063 0.039
d_energ_1 ~ energ_t1 -0.170 -0.272 -0.068 -0.341 -3.260 0.001
d_energ_1 ~~ sa07_03_t1 0.038 -0.015 0.090 0.155 1.415 0.157
sa07_03_t1 ~~ sa07_03_t1 1.851 1.650 2.052 1.000 18.028 0.000

Correlation of specific, facet-level acceptance goals with energy change score (current-self) is not significantly different from zero, r = 0.155, p = 0.157.

6.5.2.12 Energy - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7714.43 7798.407 0.921 0.048 0.057
# parameters of interest
params_lcs_energ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", # acceptance goals
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.005 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.769 NA NA
d_energ_1 ~1 0.663 0.263 1.064 3.936 3.247 0.001
energ_t1 ~1 2.221 2.105 2.338 10.085 37.352 0.000
d_energ_1 ~~ d_energ_1 0.024 -0.014 0.062 0.849 1.234 0.217
d_energ_1 ~ energ_t1 -0.298 -0.480 -0.115 -0.389 -3.197 0.001
d_energ_1 ~~ sa07_03_t1 -0.007 -0.043 0.029 -0.035 -0.398 0.690
sa07_03_t1 ~~ sa07_03_t1 1.851 1.650 2.052 1.000 18.028 0.000

Correlation of specific, facet-level acceptance goals with energy change score (ideal-self) is not significantly different from zero, r = -0.035, p = 0.69.

6.5.2.13 Compassion - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7766.535 7850.511 0.972 0.043 0.049
# parameters of interest
params_lcs_compa_curr_hyp5 <- broom::tidy(fit_mi_lcs_compa_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.892 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.546 NA NA
d_compa_1 ~1 0.300 -0.399 0.999 0.769 0.841 0.401
compa_t1 ~1 4.213 4.123 4.303 6.607 91.772 0.000
d_compa_1 ~~ d_compa_1 0.151 0.049 0.253 0.991 2.898 0.004
d_compa_1 ~ compa_t1 -0.059 -0.219 0.100 -0.097 -0.729 0.466
d_compa_1 ~~ sa06_01_t1 -0.039 -0.100 0.023 -0.112 -1.236 0.216
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with compassion change score (current-self) is not significantly different from zero, r = -0.112, p = 0.216.

6.5.2.14 Compassion - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8035.384 8119.36 0.971 0.034 0.048
# parameters of interest
params_lcs_compa_ideal_hyp5 <- broom::tidy(fit_mi_lcs_compa_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.016 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.604 NA NA
d_compa_1 ~1 0.843 -0.035 1.722 2.295 1.882 0.060
compa_t1 ~1 4.291 4.196 4.385 6.936 89.023 0.000
d_compa_1 ~~ d_compa_1 0.121 0.022 0.219 0.895 2.407 0.016
d_compa_1 ~ compa_t1 -0.192 -0.390 0.006 -0.323 -1.904 0.057
d_compa_1 ~~ sa06_01_t1 -0.005 -0.069 0.060 -0.015 -0.138 0.890
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with compassion change score (ideal-self) is not significantly different from zero, r = -0.015, p = 0.89.

6.5.2.15 Compassion - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8074.403 8158.38 0.942 0.063 0.076
# parameters of interest
params_lcs_compa_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.919 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.586 NA NA
d_compa_1 ~1 0.515 -0.209 1.239 1.263 1.394 0.163
compa_t1 ~1 4.213 4.123 4.303 6.578 91.771 0.000
d_compa_1 ~~ d_compa_1 0.161 0.055 0.268 0.969 2.968 0.003
d_compa_1 ~ compa_t1 -0.111 -0.278 0.056 -0.175 -1.308 0.191
d_compa_1 ~~ sa07_04_t1 -0.131 -0.257 -0.006 -0.230 -2.053 0.040
sa07_04_t1 ~~ sa07_04_t1 2.024 1.813 2.235 1.000 18.799 0.000

Correlation of specific, facet-level acceptance goals with compassion change score (current-self) is (barely) significantly different from zero, r = -0.23, p = 0.04.

6.5.2.16 Compassion - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8346.947 8430.924 0.945 0.047 0.058
# parameters of interest
params_lcs_compa_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", # acceptance goals
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.025 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.623 NA NA
d_compa_1 ~1 0.914 0.018 1.810 2.428 2.000 0.045
compa_t1 ~1 4.291 4.196 4.385 6.934 88.972 0.000
d_compa_1 ~~ d_compa_1 0.125 0.026 0.223 0.882 2.487 0.013
d_compa_1 ~ compa_t1 -0.209 -0.411 -0.007 -0.344 -2.027 0.043
d_compa_1 ~~ sa07_04_t1 -0.060 -0.173 0.053 -0.119 -1.036 0.300
sa07_04_t1 ~~ sa07_04_t1 2.024 1.813 2.235 1.000 18.799 0.000

Correlation of specific, facet-level acceptance goals with compassion change score (ideal-self) is not significantly different from zero, r = -0.119, p = 0.3.

6.5.2.17 Respectfulness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6758.117 6842.094 0.958 0.056 0.059
# parameters of interest
params_lcs_respe_curr_hyp5 <- broom::tidy(fit_mi_lcs_respe_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.996 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.629 NA NA
d_respe_1 ~1 0.892 0.143 1.642 2.685 2.334 0.020
respe_t1 ~1 4.444 4.374 4.514 8.449 124.133 0.000
d_respe_1 ~~ d_respe_1 0.100 0.029 0.171 0.904 2.758 0.006
d_respe_1 ~ respe_t1 -0.195 -0.359 -0.032 -0.309 -2.344 0.019
d_respe_1 ~~ sa06_01_t1 -0.007 -0.049 0.035 -0.023 -0.308 0.758
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with respectfulness change score (current-self) is not significantly different from zero, r = -0.023, p = 0.758.

6.5.2.18 Respectfulness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6216.963 6300.939 0.932 0.065 0.061
# parameters of interest
params_lcs_respe_ideal_hyp5 <- broom::tidy(fit_mi_lcs_respe_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.996 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.386 NA NA
d_respe_1 ~1 0.329 -0.482 1.140 2.253 0.795 0.426
respe_t1 ~1 4.625 4.560 4.690 12.258 139.827 0.000
d_respe_1 ~~ d_respe_1 0.021 -0.004 0.045 0.966 1.624 0.104
d_respe_1 ~ respe_t1 -0.071 -0.242 0.099 -0.184 -0.820 0.412
d_respe_1 ~~ sa06_01_t1 -0.004 -0.040 0.032 -0.030 -0.209 0.834
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with respectfulness change score (ideal-self) is not significantly different from zero, r = -0.03, p = 0.834.

6.5.2.19 Respectfulness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6992.382 7076.358 0.929 0.076 0.1
# parameters of interest
params_lcs_respe_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.065 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.742 NA NA
d_respe_1 ~1 1.363 0.642 2.083 3.716 3.708 0.000
respe_t1 ~1 4.444 4.373 4.514 8.442 124.033 0.000
d_respe_1 ~~ d_respe_1 0.109 0.035 0.184 0.812 2.873 0.004
d_respe_1 ~ respe_t1 -0.302 -0.460 -0.143 -0.433 -3.731 0.000
d_respe_1 ~~ sa07_05_t1 -0.195 -0.294 -0.095 -0.446 -3.818 0.000
sa07_05_t1 ~~ sa07_05_t1 1.744 1.473 2.015 1.000 12.613 0.000

Correlation of specific, facet-level acceptance goals with respectfulness change score (current-self) is significantly different from zero, r = -0.446, p = 0.

6.5.2.20 Respectfulness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6478.347 6562.324 0.905 0.078 0.066
# parameters of interest
params_lcs_respe_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", # acceptance goals
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.004 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.398 NA NA
d_respe_1 ~1 0.382 -0.426 1.190 2.531 0.926 0.354
respe_t1 ~1 4.625 4.560 4.690 12.144 139.684 0.000
d_respe_1 ~~ d_respe_1 0.022 -0.004 0.048 0.956 1.643 0.100
d_respe_1 ~ respe_t1 -0.083 -0.253 0.087 -0.209 -0.954 0.340
d_respe_1 ~~ sa07_05_t1 -0.030 -0.091 0.030 -0.156 -0.984 0.325
sa07_05_t1 ~~ sa07_05_t1 1.744 1.473 2.015 1.000 12.613 0.000

Correlation of specific, facet-level acceptance goals with respectfulness change score (ideal-self) is not significantly different from zero, r = -0.156, p = 0.325.

6.5.2.21 Trust - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8045.446 8129.423 0.97 0.046 0.052
# parameters of interest
params_lcs_trust_curr_hyp5 <- broom::tidy(fit_mi_lcs_trust_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.038 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.313 NA NA
d_trust_1 ~1 0.137 -0.181 0.454 0.636 0.844 0.399
trust_t1 ~1 2.850 2.732 2.968 3.994 47.430 0.000
d_trust_1 ~~ d_trust_1 0.043 -0.026 0.111 0.927 1.225 0.220
d_trust_1 ~ trust_t1 -0.082 -0.190 0.027 -0.271 -1.472 0.141
d_trust_1 ~~ sa06_01_t1 -0.007 -0.058 0.043 -0.040 -0.283 0.777
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with trust change score (current-self) is not significantly different from zero, r = -0.04, p = 0.777.

6.5.2.22 Trust - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7760.181 7844.158 0.967 0.037 0.044
# parameters of interest
params_lcs_trust_ideal_hyp5 <- broom::tidy(fit_mi_lcs_trust_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.107 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.597 NA NA
d_trust_1 ~1 0.448 0.166 0.730 1.623 3.110 0.002
trust_t1 ~1 1.946 1.847 2.045 3.806 38.539 0.000
d_trust_1 ~~ d_trust_1 0.061 0.003 0.120 0.806 2.065 0.039
d_trust_1 ~ trust_t1 -0.238 -0.385 -0.091 -0.440 -3.168 0.002
d_trust_1 ~~ sa06_01_t1 -0.008 -0.053 0.036 -0.038 -0.371 0.710
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with trust change score (ideal-self) is not significantly different from zero, r = -0.038, p = 0.71.

6.5.2.23 Trust - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8337.224 8421.2 0.944 0.064 0.075
# parameters of interest
params_lcs_trust_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.025 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.296 NA NA
d_trust_1 ~1 0.093 -0.231 0.417 0.450 0.563 0.573
trust_t1 ~1 2.850 2.732 2.968 3.982 47.411 0.000
d_trust_1 ~~ d_trust_1 0.040 -0.028 0.109 0.947 1.152 0.249
d_trust_1 ~ trust_t1 -0.066 -0.177 0.045 -0.229 -1.172 0.241
d_trust_1 ~~ sa07_06_t1 -0.055 -0.153 0.042 -0.198 -1.108 0.268
sa07_06_t1 ~~ sa07_06_t1 1.909 1.711 2.108 1.000 18.829 0.000

Correlation of specific, facet-level acceptance goals with trust change score (current-self) is not significantly different from zero, r = -0.198, p = 0.268.

6.5.2.24 Trust - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8053.016 8136.993 0.967 0.037 0.043
# parameters of interest
params_lcs_trust_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", # acceptance goals
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.106 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.595 NA NA
d_trust_1 ~1 0.445 0.165 0.726 1.626 3.110 0.002
trust_t1 ~1 1.946 1.847 2.045 3.819 38.550 0.000
d_trust_1 ~~ d_trust_1 0.061 0.002 0.119 0.807 2.037 0.042
d_trust_1 ~ trust_t1 -0.236 -0.382 -0.090 -0.439 -3.167 0.002
d_trust_1 ~~ sa07_06_t1 -0.025 -0.102 0.052 -0.073 -0.629 0.529
sa07_06_t1 ~~ sa07_06_t1 1.909 1.711 2.108 1.000 18.829 0.000

Correlation of specific, facet-level acceptance goals with trust change score (ideal-self) is not significantly different from zero, r = -0.073, p = 0.529.

6.5.2.25 Organization - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7703.447 7787.423 1 0 0.022
# parameters of interest
params_lcs_organ_curr_hyp5 <- broom::tidy(fit_mi_lcs_organ_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.003 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.509 NA NA
d_organ_1 ~1 0.325 0.064 0.586 0.699 2.445 0.014
organ_t1 ~1 2.963 2.828 3.098 3.233 43.052 0.000
d_organ_1 ~~ d_organ_1 0.202 0.106 0.297 0.933 4.150 0.000
d_organ_1 ~ organ_t1 -0.131 -0.220 -0.043 -0.259 -2.916 0.004
d_organ_1 ~~ sa06_01_t1 0.074 0.006 0.142 0.185 2.143 0.032
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with organization change score (current-self) is (barely) significantly different from zero, r = 0.185, p = 0.032.

6.5.2.26 Organization - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6690.012 6773.989 0.979 0.028 0.049
# parameters of interest
params_lcs_organ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_organ_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.971 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.603 NA NA
d_organ_1 ~1 0.280 -0.106 0.667 1.067 1.421 0.155
organ_t1 ~1 1.754 1.651 1.857 4.149 33.466 0.000
d_organ_1 ~~ d_organ_1 0.064 0.013 0.116 0.931 2.441 0.015
d_organ_1 ~ organ_t1 -0.163 -0.396 0.070 -0.262 -1.370 0.171
d_organ_1 ~~ sa06_01_t1 0.003 -0.040 0.046 0.013 0.139 0.889
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with organization change score (ideal-self) is not significantly different from zero, r = 0.013, p = 0.889.

6.5.2.27 Organization - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8017.535 8101.511 0.919 0.096 0.143
# parameters of interest
params_lcs_organ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.073 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.601 NA NA
d_organ_1 ~1 0.593 0.286 0.899 1.144 3.787 0.000
organ_t1 ~1 2.964 2.829 3.098 3.206 43.031 0.000
d_organ_1 ~~ d_organ_1 0.226 0.126 0.326 0.842 4.414 0.000
d_organ_1 ~ organ_t1 -0.222 -0.325 -0.120 -0.397 -4.270 0.000
d_organ_1 ~~ sa07_07_t1 0.213 0.087 0.338 0.311 3.323 0.001
sa07_07_t1 ~~ sa07_07_t1 2.070 1.888 2.251 1.000 22.344 0.000

The correlation of specific, facet-level acceptance goals with the organization change score (current-self) is significantly different from zero, r = 0.311, p = 0.001.

6.5.2.28 Organization - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7008.38 7092.356 0.98 0.027 0.046
# parameters of interest
params_lcs_organ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", # acceptance goals
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.973 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.607 NA NA
d_organ_1 ~1 0.286 -0.094 0.667 1.083 1.476 0.140
organ_t1 ~1 1.754 1.651 1.857 4.136 33.453 0.000
d_organ_1 ~~ d_organ_1 0.065 0.013 0.117 0.929 2.438 0.015
d_organ_1 ~ organ_t1 -0.166 -0.395 0.063 -0.266 -1.424 0.154
d_organ_1 ~~ sa07_07_t1 0.051 -0.028 0.130 0.139 1.259 0.208
sa07_07_t1 ~~ sa07_07_t1 2.070 1.888 2.251 1.000 22.344 0.000

Correlation of specific, facet-level acceptance goals with organization change score (ideal-self) is not significantly different from zero, r = 0.139, p = 0.208.

6.5.2.29 Productiveness - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7607.317 7691.293 0.965 0.058 0.049
# parameters of interest
params_lcs_produ_curr_hyp5 <- broom::tidy(fit_mi_lcs_produ_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.962 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.544 NA NA
d_produ_1 ~1 0.284 -0.047 0.616 0.724 1.680 0.093
produ_t1 ~1 3.428 3.299 3.556 4.929 52.312 0.000
d_produ_1 ~~ d_produ_1 0.147 0.076 0.219 0.955 4.041 0.000
d_produ_1 ~ produ_t1 -0.120 -0.217 -0.023 -0.212 -2.420 0.016
d_produ_1 ~~ sa06_01_t1 0.031 -0.024 0.087 0.092 1.111 0.267
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with productiveness change score (current-self) is not significantly different from zero, r = 0.092, p = 0.267.

6.5.2.30 Productiveness - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6087.909 6171.886 0.909 0.068 0.069
# parameters of interest
params_lcs_produ_ideal_hyp5 <- broom::tidy(fit_mi_lcs_produ_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.045 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.675 NA NA
d_produ_1 ~1 0.367 0.110 0.625 1.546 2.800 0.005
produ_t1 ~1 1.585 1.507 1.663 4.307 39.898 0.000
d_produ_1 ~~ d_produ_1 0.048 0.009 0.087 0.850 2.408 0.016
d_produ_1 ~ produ_t1 -0.250 -0.424 -0.076 -0.388 -2.821 0.005
d_produ_1 ~~ sa06_01_t1 -0.006 -0.035 0.024 -0.029 -0.374 0.708
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with productiveness change score (ideal-self) is not significantly different from zero, r = -0.029, p = 0.708.

6.5.2.31 Productiveness - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7892.577 7976.554 0.879 0.113 0.137
# parameters of interest
params_lcs_produ_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.002 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.594 NA NA
d_produ_1 ~1 0.484 0.080 0.889 1.178 2.348 0.019
produ_t1 ~1 3.428 3.299 3.556 4.940 52.301 0.000
d_produ_1 ~~ d_produ_1 0.154 0.080 0.228 0.911 4.090 0.000
d_produ_1 ~ produ_t1 -0.177 -0.294 -0.060 -0.299 -2.975 0.003
d_produ_1 ~~ sa07_08_t1 0.100 -0.007 0.207 0.186 1.833 0.067
sa07_08_t1 ~~ sa07_08_t1 1.880 1.691 2.069 1.000 19.477 0.000

Correlation of specific, facet-level acceptance goals with productiveness change score (current-self) is not significantly different from zero, r = 0.186, p = 0.067.

6.5.2.32 Productiveness - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6372.494 6456.471 0.911 0.068 0.066
# parameters of interest
params_lcs_produ_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", # acceptance goals
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.047 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.677 NA NA
d_produ_1 ~1 0.373 0.116 0.629 1.559 2.849 0.004
produ_t1 ~1 1.585 1.507 1.663 4.286 39.886 0.000
d_produ_1 ~~ d_produ_1 0.048 0.009 0.088 0.847 2.413 0.016
d_produ_1 ~ produ_t1 -0.253 -0.426 -0.080 -0.391 -2.866 0.004
d_produ_1 ~~ sa07_08_t1 0.050 -0.005 0.105 0.166 1.789 0.074
sa07_08_t1 ~~ sa07_08_t1 1.880 1.691 2.069 1.000 19.477 0.000

Correlation of specific, facet-level acceptance goals with productiveness change score (ideal-self) is not significantly different from zero, r = 0.166, p = 0.074.

6.5.2.33 Responsibility - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7705.316 7789.293 0.871 0.104 0.093
# parameters of interest
params_lcs_respo_curr_hyp5 <- broom::tidy(fit_mi_lcs_respo_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.018 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.510 NA NA
d_respo_1 ~1 0.544 0.179 0.908 2.970 2.925 0.003
respo_t1 ~1 3.659 3.557 3.760 10.024 70.694 0.000
d_respo_1 ~~ d_respo_1 0.031 0.001 0.060 0.918 2.051 0.040
d_respo_1 ~ respo_t1 -0.143 -0.241 -0.046 -0.286 -2.885 0.004
d_respo_1 ~~ sa06_01_t1 -0.009 -0.037 0.018 -0.060 -0.668 0.504
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with responsibility change score (current-self) is not significantly different from zero, r = -0.06, p = 0.504.

6.5.2.34 Responsibility - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6906.534 6990.51 0.964 0.044 0.053
# parameters of interest
params_lcs_respo_ideal_hyp5 <- broom::tidy(fit_mi_lcs_respo_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 0.917 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.628 NA NA
d_respo_1 ~1 0.612 -0.296 1.520 2.222 1.322 0.186
respo_t1 ~1 4.238 4.134 4.342 10.536 79.921 0.000
d_respo_1 ~~ d_respo_1 0.073 0.019 0.127 0.958 2.648 0.008
d_respo_1 ~ respo_t1 -0.140 -0.348 0.069 -0.204 -1.315 0.188
d_respo_1 ~~ sa06_01_t1 0.035 -0.006 0.076 0.147 1.685 0.092
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with responsibility change score (ideal-self) is not significantly different from zero, r = 0.147, p = 0.092.

6.5.2.35 Responsibility - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8022.652 8106.628 0.813 0.129 0.136
# parameters of interest
params_lcs_respo_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.053 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.558 NA NA
d_respo_1 ~1 0.713 0.296 1.129 3.667 3.350 0.001
respo_t1 ~1 3.659 3.557 3.760 9.965 70.676 0.000
d_respo_1 ~~ d_respo_1 0.033 0.002 0.064 0.872 2.096 0.036
d_respo_1 ~ respo_t1 -0.189 -0.302 -0.077 -0.358 -3.310 0.001
d_respo_1 ~~ sa07_09_t1 -0.048 -0.111 0.015 -0.185 -1.505 0.132
sa07_09_t1 ~~ sa07_09_t1 2.069 1.860 2.278 1.000 19.415 0.000

The correlation of specific, facet-level acceptance goals with the responsibility change score (current-self) is not significantly different from zero, r = -0.185, p = 0.132.

6.5.2.36 Responsibility - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7226.383 7310.359 0.958 0.047 0.052
# parameters of interest
params_lcs_respo_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", # acceptance goals
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 0.917 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.630 NA NA
d_respo_1 ~1 0.613 -0.294 1.521 2.289 1.324 0.185
respo_t1 ~1 4.239 4.135 4.343 10.867 79.965 0.000
d_respo_1 ~~ d_respo_1 0.069 0.017 0.121 0.958 2.593 0.010
d_respo_1 ~ respo_t1 -0.141 -0.349 0.068 -0.205 -1.323 0.186
d_respo_1 ~~ sa07_09_t1 -0.059 -0.127 0.009 -0.155 -1.689 0.091
sa07_09_t1 ~~ sa07_09_t1 2.069 1.860 2.278 1.000 19.415 0.000

Correlation of specific, facet-level acceptance goals with responsibility change score (ideal-self) is not significantly different from zero, r = -0.155, p = 0.091.

6.5.2.37 Anxiety - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7886.698 7970.675 0.983 0.04 0.068
# parameters of interest
params_lcs_anxie_curr_hyp5 <- broom::tidy(fit_mi_lcs_anxie_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.976 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.423 NA NA
d_anxie_1 ~1 0.387 0.133 0.641 0.939 2.988 0.003
anxie_t1 ~1 2.877 2.745 3.008 3.031 42.808 0.000
d_anxie_1 ~~ d_anxie_1 0.165 0.073 0.258 0.975 3.508 0.000
d_anxie_1 ~ anxie_t1 -0.069 -0.159 0.021 -0.159 -1.495 0.135
d_anxie_1 ~~ sa06_01_t1 0.027 -0.042 0.096 0.075 0.778 0.437
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with anxiety change score (current-self) is not significantly different from zero, r = 0.075, p = 0.437.

6.5.2.38 Anxiety - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7670.394 7754.371 0.923 0.049 0.061
# parameters of interest
params_lcs_anxie_ideal_hyp5 <- broom::tidy(fit_mi_lcs_anxie_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.185 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.739 NA NA
d_anxie_1 ~1 1.554 0.519 2.588 6.098 2.943 0.003
anxie_t1 ~1 4.530 4.451 4.610 11.094 111.900 0.000
d_anxie_1 ~~ d_anxie_1 0.046 0.005 0.086 0.705 2.222 0.026
d_anxie_1 ~ anxie_t1 -0.339 -0.562 -0.115 -0.543 -2.969 0.003
d_anxie_1 ~~ sa06_01_t1 0.012 -0.040 0.065 0.065 0.469 0.639
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with anxiety change score (ideal-self) is not significantly different from zero, r = 0.065, p = 0.639.

6.5.2.39 Anxiety - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8207.505 8291.481 0.952 0.068 0.105
# parameters of interest
params_lcs_anxie_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.022 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.476 NA NA
d_anxie_1 ~1 0.560 0.290 0.830 1.274 4.069 0.000
anxie_t1 ~1 2.877 2.746 3.009 3.048 42.841 0.000
d_anxie_1 ~~ d_anxie_1 0.178 0.086 0.271 0.923 3.778 0.000
d_anxie_1 ~ anxie_t1 -0.130 -0.223 -0.036 -0.278 -2.717 0.007
d_anxie_1 ~~ sa07_10_t1 -0.165 -0.287 -0.043 -0.269 -2.652 0.008
sa07_10_t1 ~~ sa07_10_t1 2.115 1.921 2.308 1.000 21.431 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (current-self) is significantly different from zero, r = -0.269, p = 0.008.

6.5.2.40 Anxiety - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7998.05 8082.026 0.924 0.049 0.058
# parameters of interest
params_lcs_anxie_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", # acceptance goals
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.180 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.730 NA NA
d_anxie_1 ~1 1.525 0.487 2.563 6.027 2.880 0.004
anxie_t1 ~1 4.530 4.451 4.610 11.075 111.886 0.000
d_anxie_1 ~~ d_anxie_1 0.046 0.005 0.086 0.711 2.210 0.027
d_anxie_1 ~ anxie_t1 -0.332 -0.557 -0.108 -0.537 -2.906 0.004
d_anxie_1 ~~ sa07_10_t1 -0.013 -0.079 0.053 -0.042 -0.387 0.698
sa07_10_t1 ~~ sa07_10_t1 2.115 1.921 2.308 1.000 21.431 0.000

Correlation of specific, facet-level acceptance goals with anxiety change score (ideal-self) is not significantly different from zero, r = -0.042, p = 0.698.

6.5.2.41 Depression - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7801.948 7885.924 0.946 0.081 0.077
# parameters of interest
params_lcs_depre_curr_hyp5 <- broom::tidy(fit_mi_lcs_depre_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 0.984 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.504 NA NA
d_depre_1 ~1 0.473 0.231 0.714 1.669 3.838 0.000
depre_t1 ~1 3.026 2.909 3.143 5.476 50.760 0.000
d_depre_1 ~~ d_depre_1 0.076 0.041 0.111 0.950 4.293 0.000
d_depre_1 ~ depre_t1 -0.115 -0.195 -0.034 -0.223 -2.800 0.005
d_depre_1 ~~ sa06_01_t1 0.006 -0.030 0.042 0.025 0.327 0.744
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with depression change score (current-self) is not significantly different from zero, r = 0.025, p = 0.744.

6.5.2.42 Depression - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6096.322 6180.299 0.897 0.072 0.075
# parameters of interest
params_lcs_depre_ideal_hyp5 <- broom::tidy(fit_mi_lcs_depre_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.157 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.701 NA NA
d_depre_1 ~1 1.383 0.649 2.118 5.223 3.692 0.000
depre_t1 ~1 4.443 4.368 4.519 10.154 115.576 0.000
d_depre_1 ~~ d_depre_1 0.052 0.011 0.093 0.738 2.463 0.014
d_depre_1 ~ depre_t1 -0.310 -0.471 -0.149 -0.512 -3.775 0.000
d_depre_1 ~~ sa06_01_t1 0.002 -0.041 0.045 0.011 0.106 0.916
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with depression change score (ideal-self) is not significantly different from zero, r = 0.011, p = 0.916.

6.5.2.43 Depression - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8124.898 8208.874 0.905 0.11 0.129
# parameters of interest
params_lcs_depre_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.015 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.540 NA NA
d_depre_1 ~1 0.598 0.343 0.853 2.051 4.599 0.000
depre_t1 ~1 3.026 2.909 3.143 5.513 50.768 0.000
d_depre_1 ~~ d_depre_1 0.078 0.043 0.113 0.914 4.340 0.000
d_depre_1 ~ depre_t1 -0.156 -0.241 -0.071 -0.294 -3.607 0.000
d_depre_1 ~~ sa07_11_t1 -0.063 -0.130 0.004 -0.156 -1.847 0.065
sa07_11_t1 ~~ sa07_11_t1 2.106 1.918 2.294 1.000 21.989 0.000

Correlation of specific, facet-level acceptance goals with depression change score (current-self) is not significantly different from zero, r = -0.156, p = 0.065.

6.5.2.44 Depression - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 6422.351 6506.327 0.942 0.053 0.052
# parameters of interest
params_lcs_depre_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", # acceptance goals
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.157 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.700 NA NA
d_depre_1 ~1 1.380 0.641 2.120 5.217 3.657 0.000
depre_t1 ~1 4.443 4.368 4.519 10.154 115.575 0.000
d_depre_1 ~~ d_depre_1 0.052 0.011 0.093 0.738 2.471 0.013
d_depre_1 ~ depre_t1 -0.309 -0.471 -0.147 -0.511 -3.741 0.000
d_depre_1 ~~ sa07_11_t1 -0.008 -0.069 0.053 -0.024 -0.259 0.795
sa07_11_t1 ~~ sa07_11_t1 2.106 1.918 2.294 1.000 21.989 0.000

Correlation of specific, facet-level acceptance goals with depression change score (ideal-self) is not significantly different from zero, r = -0.024, p = 0.795.

6.5.2.45 Volatility - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7960.547 8044.524 0.986 0.037 0.056
# parameters of interest
params_lcs_volat_curr_hyp5 <- broom::tidy(fit_mi_lcs_volat_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.058 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.453 NA NA
d_volat_1 ~1 0.320 0.056 0.585 0.786 2.377 0.017
volat_t1 ~1 3.119 2.986 3.251 3.275 45.995 0.000
d_volat_1 ~~ d_volat_1 0.147 0.064 0.230 0.885 3.457 0.001
d_volat_1 ~ volat_t1 -0.145 -0.226 -0.064 -0.339 -3.515 0.000
d_volat_1 ~~ sa06_01_t1 0.015 -0.051 0.081 0.044 0.444 0.657
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with volatility change score (current-self) is not significantly different from zero, r = 0.044, p = 0.657.

6.5.2.46 Volatility - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7153.372 7237.349 0.945 0.045 0.056
# parameters of interest
params_lcs_volat_ideal_hyp5 <- broom::tidy(fit_mi_lcs_volat_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.025 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.581 NA NA
d_volat_1 ~1 0.294 -0.052 0.641 1.135 1.663 0.096
volat_t1 ~1 1.647 1.567 1.727 3.596 40.325 0.000
d_volat_1 ~~ d_volat_1 0.060 0.004 0.116 0.894 2.106 0.035
d_volat_1 ~ volat_t1 -0.185 -0.410 0.040 -0.326 -1.608 0.108
d_volat_1 ~~ sa06_01_t1 -0.028 -0.078 0.021 -0.130 -1.124 0.261
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

The correlation of general acceptance goal with the volatility change score (ideal-self) is not significantly different from zero, r = -0.13, p = 0.261.

6.5.2.47 Volatility - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8215.89 8299.867 0.941 0.078 0.111
# parameters of interest
params_lcs_volat_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.071 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.467 NA NA
d_volat_1 ~1 0.364 0.064 0.665 0.877 2.378 0.017
volat_t1 ~1 3.119 2.986 3.251 3.276 45.998 0.000
d_volat_1 ~~ d_volat_1 0.150 0.066 0.233 0.867 3.526 0.000
d_volat_1 ~ volat_t1 -0.159 -0.252 -0.067 -0.365 -3.383 0.001
d_volat_1 ~~ sa07_12_t1 0.045 -0.067 0.158 0.090 0.789 0.430
sa07_12_t1 ~~ sa07_12_t1 1.709 1.531 1.887 1.000 18.847 0.000

Correlation of specific, facet-level acceptance goals with volatility change score (current-self) is not significantly different from zero, r = 0.09, p = 0.43.

6.5.2.48 Volatility - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7410.458 7494.434 0.929 0.052 0.064
# parameters of interest
params_lcs_volat_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", # acceptance goals
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.015 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.562 NA NA
d_volat_1 ~1 0.268 -0.069 0.604 1.053 1.556 0.120
volat_t1 ~1 1.646 1.566 1.726 3.588 40.318 0.000
d_volat_1 ~~ d_volat_1 0.059 0.002 0.115 0.908 2.041 0.041
d_volat_1 ~ volat_t1 -0.168 -0.387 0.051 -0.303 -1.505 0.132
d_volat_1 ~~ sa07_12_t1 -0.012 -0.076 0.051 -0.039 -0.383 0.701
sa07_12_t1 ~~ sa07_12_t1 1.709 1.531 1.887 1.000 18.847 0.000

Correlation of specific, facet-level acceptance goals with volatility change score (ideal-self) is not significantly different from zero, r = -0.039, p = 0.701.

6.5.2.49 Curiosity - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7619.251 7703.228 0.984 0.035 0.046
# parameters of interest
params_lcs_curio_curr_hyp5 <- broom::tidy(fit_mi_lcs_curio_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.084 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 NA NA NA
d_curio_1 ~1 0.279 -0.141 0.699 NA 1.302 0.193
curio_t1 ~1 4.032 3.933 4.132 7.224 79.614 0.000
d_curio_1 ~~ d_curio_1 -0.013 -0.047 0.021 NA -0.765 0.444
d_curio_1 ~ curio_t1 -0.055 -0.156 0.046 NA -1.059 0.289
d_curio_1 ~~ sa06_01_t1 0.000 -0.035 0.034 -0.005 -0.027 0.978
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with curiosity change score (current-self) is not significantly different from zero, r = -0.005, p = 0.978.

6.5.2.50 Curiosity - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7555.914 7639.89 0.967 0.037 0.054
# parameters of interest
params_lcs_curio_ideal_hyp5 <- broom::tidy(fit_mi_lcs_curio_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.076 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.530 NA NA
d_curio_1 ~1 0.860 0.157 1.563 4.220 2.398 0.016
curio_t1 ~1 4.457 4.382 4.533 10.770 116.320 0.000
d_curio_1 ~~ d_curio_1 0.035 -0.005 0.076 0.852 1.728 0.084
d_curio_1 ~ curio_t1 -0.189 -0.343 -0.035 -0.384 -2.407 0.016
d_curio_1 ~~ sa06_01_t1 -0.032 -0.068 0.004 -0.190 -1.739 0.082
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with curiosity change score (ideal-self) is not significantly different from zero, r = -0.19, p = 0.082.

6.5.2.51 Curiosity - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7877.453 7961.429 0.951 0.062 0.086
# parameters of interest
params_lcs_curio_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.074 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 NA NA NA
d_curio_1 ~1 0.238 -0.186 0.661 NA 1.101 0.271
curio_t1 ~1 4.033 3.933 4.132 7.264 79.624 0.000
d_curio_1 ~~ d_curio_1 -0.014 -0.048 0.020 NA -0.805 0.421
d_curio_1 ~ curio_t1 -0.045 -0.147 0.058 NA -0.854 0.393
d_curio_1 ~~ sa07_13_t1 0.023 -0.032 0.077 0.146 0.819 0.413
sa07_13_t1 ~~ sa07_13_t1 1.724 1.530 1.918 1.000 17.438 0.000

The correlation of specific, facet-level acceptance goals with the curiosity change score (current-self) is not significantly different from zero, r = 0.146, p = 0.413.

6.5.2.52 Curiosity - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7816.78 7900.757 0.942 0.05 0.067
# parameters of interest
params_lcs_curio_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", # acceptance goals
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.090 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.554 NA NA
d_curio_1 ~1 0.947 0.214 1.679 4.540 2.532 0.011
curio_t1 ~1 4.458 4.383 4.533 10.864 116.520 0.000
d_curio_1 ~~ d_curio_1 0.036 -0.004 0.077 0.831 1.750 0.080
d_curio_1 ~ curio_t1 -0.209 -0.370 -0.048 -0.411 -2.539 0.011
d_curio_1 ~~ sa07_13_t1 -0.019 -0.077 0.039 -0.076 -0.648 0.517
sa07_13_t1 ~~ sa07_13_t1 1.724 1.530 1.918 1.000 17.438 0.000

Correlation of specific, facet-level acceptance goals with curiosity change score (ideal-self) is not significantly different from zero, r = -0.076, p = 0.517.

6.5.2.53 Aesthetic - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7922.328 8006.304 0.99 0.029 0.055
# parameters of interest
params_lcs_aesth_curr_hyp5 <- broom::tidy(fit_mi_lcs_aesth_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.994 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.376 NA NA
d_aesth_1 ~1 0.188 -0.081 0.457 1.466 1.373 0.170
aesth_t1 ~1 2.848 2.725 2.970 8.375 45.474 0.000
d_aesth_1 ~~ d_aesth_1 0.016 -0.005 0.037 0.970 1.491 0.136
d_aesth_1 ~ aesth_t1 -0.066 -0.162 0.030 -0.174 -1.343 0.179
d_aesth_1 ~~ sa06_01_t1 0.004 -0.018 0.026 0.038 0.383 0.701
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with aesthetic change score (current-self) is not significantly different from zero, r = 0.038, p = 0.701.

6.5.2.54 Aesthetic - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7584.606 7668.583 0.952 0.055 0.063
# parameters of interest
params_lcs_aesth_ideal_hyp5 <- broom::tidy(fit_mi_lcs_aesth_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.964 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.602 NA NA
d_aesth_1 ~1 0.435 -0.030 0.901 2.626 1.833 0.067
aesth_t1 ~1 2.903 2.767 3.038 10.931 42.046 0.000
d_aesth_1 ~~ d_aesth_1 0.026 -0.001 0.052 0.937 1.901 0.057
d_aesth_1 ~ aesth_t1 -0.157 -0.321 0.007 -0.251 -1.873 0.061
d_aesth_1 ~~ sa06_01_t1 0.008 -0.014 0.031 0.057 0.716 0.474
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with aesthetic change score (ideal-self) is not significantly different from zero, r = 0.057, p = 0.474.

6.5.2.55 Aesthetic - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 8226.707 8310.683 0.967 0.055 0.087
# parameters of interest
params_lcs_aesth_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 1.020 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.407 NA NA
d_aesth_1 ~1 0.284 0.001 0.567 2.104 1.965 0.049
aesth_t1 ~1 2.848 2.725 2.970 8.421 45.470 0.000
d_aesth_1 ~~ d_aesth_1 0.017 -0.004 0.039 0.938 1.551 0.121
d_aesth_1 ~ aesth_t1 -0.099 -0.199 0.001 -0.249 -1.946 0.052
d_aesth_1 ~~ sa07_14_t1 0.043 0.001 0.086 0.233 1.986 0.047
sa07_14_t1 ~~ sa07_14_t1 2.002 1.823 2.180 1.000 21.957 0.000

Correlation of specific, facet-level acceptance goals with aesthetic change score (current-self) is (barely) significantly different from zero, r = 0.233, p = 0.047.

6.5.2.56 Aesthetic - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7892.858 7976.835 0.948 0.058 0.068
# parameters of interest
params_lcs_aesth_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", # acceptance goals
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.978 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.622 NA NA
d_aesth_1 ~1 0.501 0.029 0.974 2.949 2.078 0.038
aesth_t1 ~1 2.903 2.767 3.038 10.862 42.043 0.000
d_aesth_1 ~~ d_aesth_1 0.027 -0.001 0.054 0.920 1.913 0.056
d_aesth_1 ~ aesth_t1 -0.179 -0.346 -0.013 -0.282 -2.116 0.034
d_aesth_1 ~~ sa07_14_t1 0.021 -0.017 0.060 0.093 1.088 0.277
sa07_14_t1 ~~ sa07_14_t1 2.002 1.823 2.180 1.000 21.957 0.000

Correlation of specific, facet-level acceptance goals with aesthetic change score (ideal-self) is not significantly different from zero, r = 0.093, p = 0.277.

6.5.2.57 Imagination - current-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7625.283 7709.259 0.956 0.059 0.05
# parameters of interest
params_lcs_imagi_curr_hyp5 <- broom::tidy(fit_mi_lcs_imagi_curr_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.067 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.428 NA NA
d_imagi_1 ~1 0.645 0.081 1.209 2.368 2.241 0.025
imagi_t1 ~1 3.641 3.536 3.745 5.360 68.404 0.000
d_imagi_1 ~~ d_imagi_1 0.065 -0.019 0.149 0.877 1.516 0.129
d_imagi_1 ~ imagi_t1 -0.141 -0.289 0.007 -0.351 -1.872 0.061
d_imagi_1 ~~ sa06_01_t1 -0.008 -0.053 0.036 -0.037 -0.366 0.715
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with imagination change score (current-self) is not significantly different from zero, r = -0.037, p = 0.715.

6.5.2.58 Imagination - ideal-self: general acceptance goals

Results summary (sa06_01_t1 = general acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7122.125 7206.101 0.925 0.061 0.06
# parameters of interest
params_lcs_imagi_ideal_hyp5 <- broom::tidy(fit_mi_lcs_imagi_ideal_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa06_01_t1", "sa06_01_t1 ~~ sa06_01_t1", "sa06_01_t1 ~1 ", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.036 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.640 NA NA
d_imagi_1 ~1 1.012 0.148 1.875 3.102 2.297 0.022
imagi_t1 ~1 4.544 4.468 4.621 8.602 115.758 0.000
d_imagi_1 ~~ d_imagi_1 0.092 0.030 0.155 0.867 2.901 0.004
d_imagi_1 ~ imagi_t1 -0.225 -0.410 -0.040 -0.365 -2.386 0.017
d_imagi_1 ~~ sa06_01_t1 -0.038 -0.082 0.007 -0.139 -1.664 0.096
sa06_01_t1 ~~ sa06_01_t1 0.798 0.635 0.961 1.000 9.609 0.000
sa06_01_t1 ~1 4.283 4.187 4.378 4.794 87.878 0.000

Correlation of general acceptance goal with imagination change score (ideal-self) is not significantly different from zero, r = -0.139, p = 0.096.

6.5.2.59 Imagination - current-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7952.997 8036.974 0.876 0.104 0.121
# parameters of interest
params_lcs_imagi_curr_specif_hyp5 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.099 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.472 NA NA
d_imagi_1 ~1 0.781 0.203 1.359 2.679 2.650 0.008
imagi_t1 ~1 3.641 3.536 3.745 5.361 68.422 0.000
d_imagi_1 ~~ d_imagi_1 0.070 -0.013 0.153 0.827 1.661 0.097
d_imagi_1 ~ imagi_t1 -0.178 -0.331 -0.026 -0.416 -2.293 0.022
d_imagi_1 ~~ sa07_15_t1 -0.078 -0.167 0.012 -0.200 -1.696 0.090
sa07_15_t1 ~~ sa07_15_t1 2.135 1.956 2.314 1.000 23.329 0.000

Correlation of specific, facet-level acceptance goals with imagination change score (current-self) is not significantly different from zero, r = -0.2, p = 0.09.

6.5.2.60 Imagination - ideal-self: specific, facet-level acceptance goals

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp5) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 22 7451.466 7535.443 0.899 0.072 0.07
# parameters of interest
params_lcs_imagi_ideal_specif_hyp5 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp5, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", # acceptance goals
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp5, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.055 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.673 NA NA
d_imagi_1 ~1 1.143 0.275 2.011 3.392 2.582 0.010
imagi_t1 ~1 4.545 4.468 4.622 8.593 115.680 0.000
d_imagi_1 ~~ d_imagi_1 0.096 0.033 0.158 0.841 2.992 0.003
d_imagi_1 ~ imagi_t1 -0.254 -0.441 -0.068 -0.399 -2.671 0.008
d_imagi_1 ~~ sa07_15_t1 -0.078 -0.163 0.007 -0.174 -1.809 0.070
sa07_15_t1 ~~ sa07_15_t1 2.135 1.956 2.314 1.000 23.329 0.000

Correlation of specific, facet-level acceptance goals with imagination change score (ideal-self) is not significantly different from zero, r = -0.174, p = 0.07.

6.5.3 Hyp 5: Effects summary

Run models for all facets with a template & loop:

Show the code
# create df for table:

df_table_hyp5 <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_ideal_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_curr_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_ideal_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_curr_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_ideal_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_curr_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_ideal_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_curr_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_ideal_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_curr_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_ideal_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_curr_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_socia_ideal_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_asser_curr_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_ideal_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_curr_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_asser_ideal_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_energ_curr_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_ideal_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_curr_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_energ_ideal_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_compa_curr_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_ideal_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_curr_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_compa_ideal_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_respe_curr_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_ideal_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_curr_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_respe_ideal_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_trust_curr_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_ideal_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_curr_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_trust_ideal_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_organ_curr_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_ideal_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_curr_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_organ_ideal_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_produ_curr_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_ideal_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_curr_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_produ_ideal_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_respo_curr_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_ideal_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_curr_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_respo_ideal_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_anxie_curr_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_ideal_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_curr_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_depre_curr_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_ideal_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_curr_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_depre_ideal_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_volat_curr_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_ideal_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_curr_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_volat_ideal_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_curio_curr_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_ideal_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_curr_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_curio_ideal_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_aesth_curr_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_ideal_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_curr_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_imagi_curr_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_ideal_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_curr_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, std.all, statistic, p.value)

Results summary across the Big Five traits: covariance of the latent change score and acceptance goal(s)

kable(df_table_hyp5[1:20, ], digits = 3)
trait ref goal estimate std.all statistic p.value
extraversion current general 0.008 0.037 0.446 0.656
extraversion ideal general 0.016 0.073 0.778 0.437
extraversion current specific -0.035 -0.155 -1.181 0.238
extraversion ideal specific -0.011 -0.050 -0.443 0.658
agreeableness current general -0.008 -0.043 -0.605 0.545
agreeableness ideal general 0.000 -0.002 -0.020 0.984
agreeableness current specific -0.059 -0.309 -2.392 0.017
agreeableness ideal specific -0.024 -0.100 -1.087 0.277
conscientiousness current general -0.031 -0.104 -1.418 0.156
conscientiousness ideal general 0.017 0.065 1.044 0.297
conscientiousness current specific -0.062 -0.167 -1.707 0.088
conscientiousness ideal specific -0.050 -0.162 -2.036 0.042
neuroticism current general -0.023 -0.071 -1.082 0.279
neuroticism ideal general -0.016 -0.056 -0.681 0.496
neuroticism current specific 0.066 0.186 2.121 0.034
neuroticism ideal specific 0.003 0.009 0.116 0.908
openness current general -0.014 -0.067 -0.794 0.427
openness ideal general -0.025 -0.143 -1.941 0.052
openness current specific -0.024 -0.133 -1.099 0.272
openness ideal specific -0.024 -0.157 -2.101 0.036

Four covariances significantly differ from zero (at p < .05):

  • changes in current-level agreeableness covary with the specific acceptance goals (latent factor of the three A facets)
  • changes in ideal-level conscientiousness covary with the specific acceptance goals (latent factor of the three C facets)
    changes in current-level neuroticism covary with the specific acceptance goals (latent factor of the three N facets)
  • changes in ideal-level openness covary with the specific acceptance goals (latent factor of the three O facets)

-> unexpected direction of effects!

Results summary across the Big Five facets: covariance of the latent change score and acceptance goal(s)

kable(df_table_hyp5[21:80, ], digits = 3)
trait ref goal estimate std.all statistic p.value
sociability current general 0.032 0.090 0.879 0.379
sociability ideal general -0.020 -0.118 -0.742 0.458
sociability current specific -0.066 -0.119 -1.284 0.199
sociability ideal specific -0.059 -0.239 -1.742 0.082
assertiveness current general -0.009 -0.041 -0.457 0.648
assertiveness ideal general 0.035 0.240 1.826 0.068
assertiveness current specific -0.006 -0.018 -0.164 0.870
assertiveness ideal specific 0.060 0.273 1.817 0.069
energy current general 0.003 0.019 0.245 0.806
energy ideal general -0.009 -0.067 -0.781 0.435
energy current specific 0.038 0.155 1.415 0.157
energy ideal specific -0.007 -0.035 -0.398 0.690
compassion current general -0.039 -0.112 -1.236 0.216
compassion ideal general -0.005 -0.015 -0.138 0.890
compassion current specific -0.131 -0.230 -2.053 0.040
compassion ideal specific -0.060 -0.119 -1.036 0.300
respectfulness current general -0.007 -0.023 -0.308 0.758
respectfulness ideal general -0.004 -0.030 -0.209 0.834
respectfulness current specific -0.195 -0.446 -3.818 0.000
respectfulness ideal specific -0.030 -0.156 -0.984 0.325
trust current general -0.007 -0.040 -0.283 0.777
trust ideal general -0.008 -0.038 -0.371 0.710
trust current specific -0.055 -0.198 -1.108 0.268
trust ideal specific -0.025 -0.073 -0.629 0.529
organization current general 0.074 0.185 2.143 0.032
organization ideal general 0.003 0.013 0.139 0.889
organization current specific 0.213 0.311 3.323 0.001
organization ideal specific 0.051 0.139 1.259 0.208
productiveness current general 0.031 0.092 1.111 0.267
productiveness ideal general -0.006 -0.029 -0.374 0.708
productiveness current specific 0.100 0.186 1.833 0.067
productiveness ideal specific 0.050 0.166 1.789 0.074
responsibility current general -0.009 -0.060 -0.668 0.504
responsibility ideal general 0.035 0.147 1.685 0.092
responsibility current specific -0.048 -0.185 -1.505 0.132
responsibility ideal specific -0.059 -0.155 -1.689 0.091
anxiety current general 0.027 0.075 0.778 0.437
anxiety ideal general 0.012 0.065 0.469 0.639
anxiety current specific -0.165 -0.269 -2.652 0.008
anxiety ideal specific -0.013 -0.042 -0.387 0.698
depression current general 0.006 0.025 0.327 0.744
depression ideal general 0.002 0.011 0.106 0.916
depression current specific -0.063 -0.156 -1.847 0.065
depression ideal specific -0.008 -0.024 -0.259 0.795
volatility current general 0.015 0.044 0.444 0.657
volatility ideal general -0.028 -0.130 -1.124 0.261
volatility current specific 0.045 0.090 0.789 0.430
volatility ideal specific -0.012 -0.039 -0.383 0.701
curiosity current general 0.000 -0.005 -0.027 0.978
curiosity ideal general -0.032 -0.190 -1.739 0.082
curiosity current specific 0.023 0.146 0.819 0.413
curiosity ideal specific -0.019 -0.076 -0.648 0.517
aesthetic current general 0.004 0.038 0.383 0.701
aesthetic ideal general 0.008 0.057 0.716 0.474
aesthetic current specific 0.043 0.233 1.986 0.047
aesthetic ideal specific 0.021 0.093 1.088 0.277
imagination current general -0.008 -0.037 -0.366 0.715
imagination ideal general -0.038 -0.139 -1.664 0.096
imagination current specific -0.078 -0.200 -1.696 0.090
imagination ideal specific -0.078 -0.174 -1.809 0.070

Looking at the facets, we find five covariances that significantly differ from zero at p < .05 (relatively unsystematic across facets / current-ideal / goal dimension):
- Changes in current-level compassion and respectfulness covary with the respective facet-specific acceptance goal.
- Further, changes in current-level organization covary with the general acceptance goal and the specific facet acceptance goal.
- Changes in current-level anxiety covary with the specific facet acceptance goal.

Prepare data frame for plotting:

Show the code
df_table_hyp5_plot <- bind_rows(
  #traits
  params_lcs_extra_curr_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_ideal_hyp5 %>% filter(term=="d_extra_1 ~~ sa06_01_t1"),
  params_lcs_extra_curr_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_extra_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_extra_1"),
  params_lcs_agree_curr_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_ideal_hyp5 %>% filter(term=="d_agree_1 ~~ sa06_01_t1"),
  params_lcs_agree_curr_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_agree_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_agree_1"),
  params_lcs_consc_curr_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_ideal_hyp5 %>% filter(term=="d_consc_1 ~~ sa06_01_t1"),
  params_lcs_consc_curr_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_consc_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_consc_1"),
  params_lcs_neuro_curr_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_ideal_hyp5 %>% filter(term=="d_neuro_1 ~~ sa06_01_t1"),
  params_lcs_neuro_curr_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_neuro_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_neuro_1"),
  params_lcs_openn_curr_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_ideal_hyp5 %>% filter(term=="d_openn_1 ~~ sa06_01_t1"),
  params_lcs_openn_curr_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  params_lcs_openn_ideal_specif_hyp5 %>% filter(term=="goals ~~ d_openn_1"),
  #facets
  params_lcs_socia_curr_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_ideal_hyp5 %>% filter(term=="d_socia_1 ~~ sa06_01_t1"),
  params_lcs_socia_curr_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_socia_ideal_specif_hyp5 %>% filter(term=="d_socia_1 ~~ sa07_01_t1"),
  params_lcs_asser_curr_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_ideal_hyp5 %>% filter(term=="d_asser_1 ~~ sa06_01_t1"),
  params_lcs_asser_curr_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_asser_ideal_specif_hyp5 %>% filter(term=="d_asser_1 ~~ sa07_02_t1"),
  params_lcs_energ_curr_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_ideal_hyp5 %>% filter(term=="d_energ_1 ~~ sa06_01_t1"),
  params_lcs_energ_curr_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_energ_ideal_specif_hyp5 %>% filter(term=="d_energ_1 ~~ sa07_03_t1"),
  params_lcs_compa_curr_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_ideal_hyp5 %>% filter(term=="d_compa_1 ~~ sa06_01_t1"),
  params_lcs_compa_curr_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_compa_ideal_specif_hyp5 %>% filter(term=="d_compa_1 ~~ sa07_04_t1"),
  params_lcs_respe_curr_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_ideal_hyp5 %>% filter(term=="d_respe_1 ~~ sa06_01_t1"),
  params_lcs_respe_curr_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_respe_ideal_specif_hyp5 %>% filter(term=="d_respe_1 ~~ sa07_05_t1"),
  params_lcs_trust_curr_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_ideal_hyp5 %>% filter(term=="d_trust_1 ~~ sa06_01_t1"),
  params_lcs_trust_curr_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_trust_ideal_specif_hyp5 %>% filter(term=="d_trust_1 ~~ sa07_06_t1"),
  params_lcs_organ_curr_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_ideal_hyp5 %>% filter(term=="d_organ_1 ~~ sa06_01_t1"),
  params_lcs_organ_curr_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_organ_ideal_specif_hyp5 %>% filter(term=="d_organ_1 ~~ sa07_07_t1"),
  params_lcs_produ_curr_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_ideal_hyp5 %>% filter(term=="d_produ_1 ~~ sa06_01_t1"),
  params_lcs_produ_curr_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_produ_ideal_specif_hyp5 %>% filter(term=="d_produ_1 ~~ sa07_08_t1"),
  params_lcs_respo_curr_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_ideal_hyp5 %>% filter(term=="d_respo_1 ~~ sa06_01_t1"),
  params_lcs_respo_curr_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_respo_ideal_specif_hyp5 %>% filter(term=="d_respo_1 ~~ sa07_09_t1"),
  params_lcs_anxie_curr_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_ideal_hyp5 %>% filter(term=="d_anxie_1 ~~ sa06_01_t1"),
  params_lcs_anxie_curr_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_anxie_ideal_specif_hyp5 %>% filter(term=="d_anxie_1 ~~ sa07_10_t1"),
  params_lcs_depre_curr_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_ideal_hyp5 %>% filter(term=="d_depre_1 ~~ sa06_01_t1"),
  params_lcs_depre_curr_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_depre_ideal_specif_hyp5 %>% filter(term=="d_depre_1 ~~ sa07_11_t1"),
  params_lcs_volat_curr_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_ideal_hyp5 %>% filter(term=="d_volat_1 ~~ sa06_01_t1"),
  params_lcs_volat_curr_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_volat_ideal_specif_hyp5 %>% filter(term=="d_volat_1 ~~ sa07_12_t1"),
  params_lcs_curio_curr_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_ideal_hyp5 %>% filter(term=="d_curio_1 ~~ sa06_01_t1"),
  params_lcs_curio_curr_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_curio_ideal_specif_hyp5 %>% filter(term=="d_curio_1 ~~ sa07_13_t1"),
  params_lcs_aesth_curr_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_ideal_hyp5 %>% filter(term=="d_aesth_1 ~~ sa06_01_t1"),
  params_lcs_aesth_curr_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_aesth_ideal_specif_hyp5 %>% filter(term=="d_aesth_1 ~~ sa07_14_t1"),
  params_lcs_imagi_curr_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_ideal_hyp5 %>% filter(term=="d_imagi_1 ~~ sa06_01_t1"),
  params_lcs_imagi_curr_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  params_lcs_imagi_ideal_specif_hyp5 %>% filter(term=="d_imagi_1 ~~ sa07_15_t1"),
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=4),
         ref = rep(rep(c("current", "ideal"), 2), 20),
         goal = rep(c(rep("general", 2), rep("specific", 2)), 20)) %>% 
  select(trait, ref, goal, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp5_plot <- df_table_hyp5_plot %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor(ref, levels = c("current", "ideal"), labels = c("current", "ideal"))) %>% 
  mutate(goal = factor(goal, levels = c("general", "specific"), labels = c("general", "specific"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses:

  • current = current-level personality
  • ideal = ideal-level personality
  • general = general acceptance goal
  • specific = specific, facet-level acceptance goal(s)
Show the code
ggplot(df_table_hyp5_plot, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + goal, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")

6.6 H6: Desire to change and frequency of self-improvement behaviors as moderators of change in personality in self-improvement group (H2 in paper)

In the self-improvement group, change in current-self ratings but not change in ideal-self ratings will be moderated by change goals (both general and trait-/facet-specific goals) and the frequency of self-improvement behaviors.

We will test this one domain/facet at a time. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and specify change goals (or the frequency of self-improvement behaviors) as a moderator of latent trait change. We will check in a second set of models whether changes in current-self ratings persist from T2 to T3.

Reshape and split data set by intervention group:

Show the code
# from T1 to T2
df_sbsa2_wide_pers_sb_mod <- df_sbsa2 %>% 
  filter(rando=="Self-Improvement" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sb07", # facet-specific change goals
                                  "sb04"))) %>% # frequency self-improvement behaviors
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("sb07", "sb04")))) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, 
            sb04_01_t1, sb04_02_t1, sb04_03_t1)) # frequency of self-improvement behaviors measured at T2
# colnames(df_sbsa2_wide_pers_sb_mod)

group_assign <- df_sbsa2 %>% select(pid, rando) %>% unique()

df_sbsa2_wide_pers_sb_mod <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Improvement") %>% select(-rando, -ends_with("_t3")) %>%
  left_join(df_sbsa2_wide_pers_sb_mod)

# follow-up, from T2 to T3
df_sbsa2_wide_pers_sb_mod_fu <- df_sbsa2 %>% 
  filter(rando=="Self-Improvement" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sb07", # facet-specific change goals -> asked at T1
                                  "sb04"))) %>% # frequency self-improvement behaviors -> asked at T2
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("sb07", "sb04")))) %>% 
  select(-c(sb07_01_t2, sb07_02_t2, sb07_03_t2, sb07_04_t2, sb07_05_t2, 
            sb07_06_t2, sb07_07_t2, sb07_08_t2, sb07_09_t2, sb07_10_t2, 
            sb07_11_t2, sb07_12_t2, sb07_13_t2, sb07_14_t2, sb07_15_t2, 
            sb04_01_t1, sb04_02_t1, sb04_03_t1)) # frequency of self-improvement behaviors measured at T2
# colnames(df_sbsa2_wide_pers_sb_mod_fu)

df_sbsa2_wide_pers_sb_mod_fu <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Improvement" & !is.na(valid_t2)) %>% select(-rando, -ends_with("_t1")) %>%
  left_join(df_sbsa2_wide_pers_sb_mod_fu)

6.6.1 Big Five traits (run models)

Run models for all traits with templates & loops:

Show the code
# create templates:

# 1st, for facet-specific change goals

trait_template_mod_goal <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for trait_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ goals               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

trait_facets_nrs <- list(a1 = c(1:3), b2 = c(4:6), c3 = c(7:9), d4 = c(10:12), e5 = c(13:15)) # matching facet nrs to traits 

# loop across 5 traits -> change in current-self ratings
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  mod_names = paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), 
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3"), 
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], 
                                         "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), trait_model_fit))
}  

# loop across 5 traits -> change in *ideal*-self ratings (not hypothesis-conform)
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  mod_names = paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"), # ideal instead of current!
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3"), 
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], 
                                         "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), template_filled)) # ideal instead of curr
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), trait_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current self ratings)

trait_template_mod_goal_fu <- '
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 
trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for trait_t3 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t3 ~ 1*trait_t2     # This parameter regresses trait_t3 perfectly on trait_t2
d_trait_1 =~ 1*trait_t3   # This defines the latent change score factor as measured perfectly by scores on trait_t3
trait_t3 ~ 0*1            # This line constrains the intercept of trait_t3 to 0
trait_t3 ~~ 0*trait_t3    # This fixes the variance of trait_t3 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t2 ~ 1               # This estimates the intercept of trait_t2 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t2 ~~ trait_t2         # This estimates the variance of trait_t2 
trait_t2 ~ goals               # This estimates the moderation effect on personality at T2
d_trait_1 ~ trait_t2 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t2 ~~ ind01_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind02_t2 ~~ ind02_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind03_t2 ~~ ind03_t3   # This allows residual covariance on indicator X3 across T2 and T3

ind01_t2 ~~ res1*ind01_t2   # This allows residual variance on indicator X1 at T2
ind02_t2 ~~ res2*ind02_t2   # This allows residual variance on indicator X2 at T2
ind03_t2 ~~ res3*ind03_t2   # This allows residual variance on indicator X3 at T2

ind01_t3 ~~ res1*ind01_t3  # This allows residual variance on indicator X1 at T3 
ind02_t3 ~~ res2*ind02_t3  # This allows residual variance on indicator X2 at T3 
ind03_t3 ~~ res3*ind03_t3  # This allows residual variance on indicator X3 at T3

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind01_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind02_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind03_t3 ~ m3*1     # This estimates the intercept of X3 at T3

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

# loop across 5 traits -> change in current-self ratings
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  mod_names = paste0("sb07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal_fu, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), 
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3"), 
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], 
                                         "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), trait_model_fit))
}  

# 2nd, for frequency of self-improvement behavior

trait_template_mod_frequ <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for extra_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), 
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), trait_model_fit))
}  

# loop across 5 traits -> change in *ideal*-self ratings (not hypothesis-conform)
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"),  # ideal instead of current!
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), template_filled)) # ideal instead of curr
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), trait_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current self ratings)

trait_template_mod_frequ_fu <- '
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 
trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for extra_t3 with the equality constrained factor loadings

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

trait_t3 ~ 1*trait_t2     # This parameter regresses trait_t3 perfectly on trait_t2
d_trait_1 =~ 1*trait_t3   # This defines the latent change score factor as measured perfectly by scores on trait_t3
trait_t3 ~ 0*1            # This line constrains the intercept of trait_t3 to 0
trait_t3 ~~ 0*trait_t3    # This fixes the variance of trait_t3 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t2 ~ 1               # This estimates the intercept of trait_t2 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t2 ~~ trait_t2         # This estimates the variance of trait_t2 
trait_t2 ~ frequ               # This estimates the moderation effect on personality at T2
d_trait_1 ~ trait_t2 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t2 ~~ ind01_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind02_t2 ~~ ind02_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind03_t2 ~~ ind03_t3   # This allows residual covariance on indicator X3 across T2 and T3

ind01_t2 ~~ res1*ind01_t2   # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2   # This allows residual variance on indicator X2 at T2
ind03_t2 ~~ res3*ind03_t2   # This allows residual variance on indicator X3 at T2

ind01_t3 ~~ res1*ind01_t3  # This allows residual variance on indicator X1 at T3 
ind02_t3 ~~ res2*ind02_t3  # This allows residual variance on indicator X2 at T3 
ind03_t3 ~~ res3*ind03_t3  # This allows residual variance on indicator X3 at T3

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind01_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind02_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind03_t3 ~ m3*1     # This estimates the intercept of X3 at T3

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 5 traits
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  # items = paste0(bfi_versions[[5]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ_fu, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), 
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), trait_model_fit))
}  

6.6.2 Big Five traits (current self)

6.6.2.1 Extraversion: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6891.241 6990.64 0.941 0.088 0.049
# parameters of interest
params_lcs_extra_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.080 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.525 NA NA
d_extra_1 ~1 0.906 0.316 1.497 3.114 3.009 0.003
extra_t1 ~1 2.987 2.901 3.073 4.990 67.877 0.000
d_extra_1 ~~ d_extra_1 0.070 0.035 0.105 0.823 3.930 0.000
extra_t1 ~ goals -0.579 -0.805 -0.353 -0.725 -5.019 0.000
d_extra_1 ~ extra_t1 -0.271 -0.469 -0.073 -0.557 -2.682 0.007
d_extra_1 ~ goals -0.090 -0.267 0.087 -0.231 -0.994 0.320
goals ~~ goals 0.562 0.296 0.828 1.000 4.145 0.000

The moderation effect of specific, facet-level change goals with the extraversion change score (current-self) is not significantly different from zero, b = -0.09, p = 0.32.

6.6.2.2 Extraversion: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5919.022 6018.422 0.972 0.062 0.043
# parameters of interest
params_lcs_extra_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_extra_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.080 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.524 NA NA
d_extra_1 ~1 0.683 0.425 0.941 2.353 5.187 0.000
extra_t1 ~1 2.987 2.901 3.073 5.000 67.984 0.000
d_extra_1 ~~ d_extra_1 0.065 0.032 0.097 0.767 3.912 0.000
extra_t1 ~ frequ 0.049 -0.098 0.195 0.051 0.651 0.515
d_extra_1 ~ extra_t1 -0.196 -0.281 -0.112 -0.404 -4.545 0.000
d_extra_1 ~ frequ 0.132 0.049 0.216 0.285 3.117 0.002
frequ ~~ frequ 0.391 0.253 0.529 1.000 5.553 0.000

The frequency of self-improvement behaviors significantly moderates changes in extraversion (current-self), b = 0.132, p = 0.002.

6.6.2.3 Agreeableness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6241.705 6341.104 1 0 0.033
# parameters of interest
params_lcs_agree_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.074 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.535 NA NA
d_agree_1 ~1 0.672 0.271 1.073 3.306 3.282 0.001
agree_t1 ~1 3.463 3.395 3.531 8.489 99.804 0.000
d_agree_1 ~~ d_agree_1 0.035 0.015 0.055 0.854 3.430 0.001
agree_t1 ~ goals -0.146 -0.219 -0.073 -0.330 -3.911 0.000
d_agree_1 ~ agree_t1 -0.188 -0.304 -0.072 -0.378 -3.186 0.001
d_agree_1 ~ goals 0.003 -0.045 0.052 0.015 0.132 0.895
goals ~~ goals 0.852 0.558 1.146 1.000 5.688 0.000

The moderation effect of specific, facet-level change goals with the agreeableness change score (current-self) is not significantly different from zero, b = 0.003, p = 0.895.

6.6.2.4 Agreeableness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5242.916 5342.316 0.989 0.033 0.041
# parameters of interest
params_lcs_agree_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_agree_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.086 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.540 NA NA
d_agree_1 ~1 0.810 0.416 1.204 3.773 4.034 0.000
agree_t1 ~1 3.462 3.394 3.530 8.023 99.324 0.000
d_agree_1 ~~ d_agree_1 0.037 0.015 0.059 0.809 3.353 0.001
agree_t1 ~ frequ 0.209 0.084 0.334 0.307 3.264 0.001
d_agree_1 ~ agree_t1 -0.228 -0.340 -0.115 -0.458 -3.971 0.000
d_agree_1 ~ frequ 0.061 -0.008 0.130 0.181 1.735 0.083
frequ ~~ frequ 0.402 0.264 0.540 1.000 5.709 0.000

The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (current-self) is not significantly different from zero, b = 0.061, p = 0.083.

6.6.2.5 Conscientiousness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6354.925 6454.324 0.989 0.05 0.031
# parameters of interest
params_lcs_consc_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.997 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.533 NA NA
d_consc_1 ~1 0.789 0.314 1.264 1.902 3.257 0.001
consc_t1 ~1 3.378 3.287 3.469 4.353 72.745 0.000
d_consc_1 ~~ d_consc_1 0.158 0.083 0.232 0.917 4.151 0.000
consc_t1 ~ goals -0.447 -0.515 -0.380 -0.693 -12.973 0.000
d_consc_1 ~ consc_t1 -0.202 -0.344 -0.060 -0.378 -2.795 0.005
d_consc_1 ~ goals -0.058 -0.138 0.021 -0.169 -1.444 0.149
goals ~~ goals 1.445 1.175 1.715 1.000 10.490 0.000

The moderation effect of specific, facet-level change goals with the conscientiousness change score (current-self) is not significantly different from zero, b = -0.058, p = 0.149.

6.6.2.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5522.336 5621.736 0.992 0.038 0.031
# parameters of interest
params_lcs_consc_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_consc_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.996 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.533 NA NA
d_consc_1 ~1 0.593 0.285 0.900 1.443 3.773 0.000
consc_t1 ~1 3.378 3.287 3.469 4.405 72.829 0.000
d_consc_1 ~~ d_consc_1 0.155 0.079 0.232 0.923 4.000 0.000
consc_t1 ~ frequ 0.136 -0.040 0.313 0.111 1.511 0.131
d_consc_1 ~ consc_t1 -0.145 -0.234 -0.056 -0.271 -3.182 0.001
d_consc_1 ~ frequ 0.067 -0.039 0.173 0.102 1.233 0.217
frequ ~~ frequ 0.393 0.253 0.532 1.000 5.525 0.000

The moderation effect of the frequency of self-improvement behaviors with the conscientiousness change score (current-self) is not significantly different from zero, b = 0.067, p = 0.217.

6.6.2.7 Neuroticism: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6722.804 6822.203 0.99 0.047 0.029
# parameters of interest
params_lcs_neuro_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.070 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.586 NA NA
d_neuro_1 ~1 0.806 0.408 1.203 1.747 3.974 0.000
neuro_t1 ~1 3.276 3.179 3.372 3.890 66.638 0.000
d_neuro_1 ~~ d_neuro_1 0.175 0.133 0.218 0.824 8.135 0.000
neuro_t1 ~ goals 0.532 0.443 0.622 0.718 11.663 0.000
d_neuro_1 ~ neuro_t1 -0.301 -0.422 -0.179 -0.549 -4.854 0.000
d_neuro_1 ~ goals 0.090 -0.001 0.181 0.222 1.931 0.053
goals ~~ goals 1.291 0.989 1.592 1.000 8.394 0.000

The moderation effect of specific, facet-level change goals with the neuroticism change score (current-self) is not significantly different from zero, b = 0.09, p = 0.053.

6.6.2.8 Neuroticism: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5761.746 5861.145 0.992 0.04 0.038
# parameters of interest
params_lcs_neuro_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_neuro_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.071 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.588 NA NA
d_neuro_1 ~1 0.528 0.286 0.770 1.145 4.272 0.000
neuro_t1 ~1 3.276 3.179 3.372 3.897 66.619 0.000
d_neuro_1 ~~ d_neuro_1 0.179 0.135 0.223 0.842 7.945 0.000
neuro_t1 ~ frequ -0.050 -0.243 0.144 -0.037 -0.503 0.615
d_neuro_1 ~ neuro_t1 -0.216 -0.292 -0.140 -0.394 -5.553 0.000
d_neuro_1 ~ frequ -0.048 -0.155 0.058 -0.066 -0.886 0.376
frequ ~~ frequ 0.393 0.254 0.533 1.000 5.513 0.000

The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (current-self) is not significantly different from zero, b = -0.048, p = 0.376.

6.6.2.9 Openness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6284.378 6383.777 0.983 0.052 0.037
# parameters of interest
params_lcs_openn_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 0.996 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.455 NA NA
d_openn_1 ~1 0.461 0.096 0.827 1.717 2.473 0.013
openn_t1 ~1 3.485 3.409 3.560 5.931 90.550 0.000
d_openn_1 ~~ d_openn_1 0.068 0.038 0.099 0.949 4.386 0.000
openn_t1 ~ goals -0.248 -0.356 -0.141 -0.335 -4.525 0.000
d_openn_1 ~ openn_t1 -0.109 -0.212 -0.007 -0.239 -2.090 0.037
d_openn_1 ~ goals -0.020 -0.088 0.048 -0.060 -0.586 0.558
goals ~~ goals 0.628 0.411 0.845 1.000 5.672 0.000

The moderation effect of specific, facet-level change goals with the openness change score (current-self) is not significantly different from zero, b = -0.02, p = 0.558.

6.6.2.10 Openness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5464.696 5564.095 0.997 0.019 0.038
# parameters of interest
params_lcs_openn_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_openn_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 0.997 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.456 NA NA
d_openn_1 ~1 0.495 0.145 0.845 1.870 2.770 0.006
openn_t1 ~1 3.486 3.410 3.561 6.022 90.667 0.000
d_openn_1 ~~ d_openn_1 0.065 0.035 0.094 0.924 4.348 0.000
openn_t1 ~ frequ 0.221 0.081 0.361 0.238 3.095 0.002
d_openn_1 ~ openn_t1 -0.120 -0.217 -0.022 -0.262 -2.408 0.016
d_openn_1 ~ frequ 0.072 -0.016 0.159 0.169 1.605 0.108
frequ ~~ frequ 0.388 0.250 0.526 1.000 5.512 0.000

The moderation effect of the frequency of self-improvement behaviors with the openness change score (current-self) is not significantly different from zero, b = 0.072, p = 0.108.

6.6.3 Big Five traits (current self - follow-up T3)

6.6.3.1 Extraversion: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5894.919 5990.604 0.984 0.046 0.04
# parameters of interest
params_lcs_extra_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t3 ~ extra_t2", "d_extra_1 =~ extra_t3", "d_extra_1 ~ extra_t2", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t2 ~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t2 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t3 ~ extra_t2 1.000 1.000 1.000 0.974 NA NA
d_extra_1 =~ extra_t3 1.000 1.000 1.000 0.553 NA NA
d_extra_1 ~1 0.240 -0.466 0.946 0.784 0.666 0.505
extra_t2 ~1 3.141 3.052 3.229 5.832 69.404 0.000
d_extra_1 ~~ d_extra_1 0.087 0.033 0.141 0.930 3.167 0.002
extra_t2 ~ goals -0.440 -0.600 -0.280 -0.678 -5.385 0.000
d_extra_1 ~ extra_t2 -0.070 -0.298 0.157 -0.124 -0.606 0.545
d_extra_1 ~ goals 0.061 -0.088 0.210 0.165 0.798 0.425
goals ~~ goals 0.690 0.370 1.011 1.000 4.222 0.000

The moderation effect of specific, facet-level change goals with the extraversion change score (current-self) is not significantly different from zero, b = 0.061, p = 0.425.

6.6.3.2 Extraversion: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5342.784 5438.468 0.988 0.042 0.045
# parameters of interest
params_lcs_extra_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_extra_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t3 ~ extra_t2", "d_extra_1 =~ extra_t3", "d_extra_1 ~ extra_t2", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t2 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t2 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t3 ~ extra_t2 1.000 1.000 1.000 0.978 NA NA
d_extra_1 =~ extra_t3 1.000 1.000 1.000 0.556 NA NA
d_extra_1 ~1 0.461 0.103 0.818 1.461 2.525 0.012
extra_t2 ~1 3.141 3.052 3.230 5.660 69.146 0.000
d_extra_1 ~~ d_extra_1 0.093 0.039 0.148 0.940 3.354 0.001
extra_t2 ~ frequ 0.186 0.032 0.341 0.208 2.366 0.018
d_extra_1 ~ extra_t2 -0.141 -0.256 -0.026 -0.248 -2.399 0.016
d_extra_1 ~ frequ 0.010 -0.085 0.104 0.019 0.201 0.840
frequ ~~ frequ 0.384 0.246 0.523 1.000 5.434 0.000

The moderation effect of the frequency of self-improvement behaviors with the extraversion change score (current-self) is not significantly different from zero, b = 0.01, p = 0.84.

6.6.3.3 Agreeableness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5370.967 5466.651 0.988 0.035 0.038
# parameters of interest
params_lcs_agree_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t3 ~ agree_t2", "d_agree_1 =~ agree_t3", "d_agree_1 ~ agree_t2", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t2 ~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t2 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t3 ~ agree_t2 1.000 1.000 1.000 0.983 NA NA
d_agree_1 =~ agree_t3 1.000 1.000 1.000 0.370 NA NA
d_agree_1 ~1 0.198 -0.218 0.614 1.450 0.933 0.351
agree_t2 ~1 3.472 3.403 3.542 9.551 98.183 0.000
d_agree_1 ~~ d_agree_1 0.018 -0.003 0.039 0.977 1.688 0.091
agree_t2 ~ goals -0.105 -0.171 -0.039 -0.262 -3.118 0.002
d_agree_1 ~ agree_t2 -0.059 -0.177 0.059 -0.157 -0.980 0.327
d_agree_1 ~ goals -0.009 -0.057 0.038 -0.062 -0.387 0.699
goals ~~ goals 0.827 0.490 1.165 1.000 4.805 0.000

The moderation effect of specific, facet-level change goals with the agreeableness change score (current-self) is not significantly different from zero, b = -0.009, p = 0.699.

6.6.3.4 Agreeableness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 4780.544 4876.228 0.99 0.032 0.043
# parameters of interest
params_lcs_agree_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_agree_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t3 ~ agree_t2", "d_agree_1 =~ agree_t3", "d_agree_1 ~ agree_t2", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t2 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t2 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t3 ~ agree_t2 1.000 1.000 1.000 0.982 NA NA
d_agree_1 =~ agree_t3 1.000 1.000 1.000 0.360 NA NA
d_agree_1 ~1 0.054 -0.435 0.543 0.377 0.216 0.829
agree_t2 ~1 3.473 3.403 3.542 8.888 97.530 0.000
d_agree_1 ~~ d_agree_1 0.019 -0.006 0.044 0.937 1.493 0.135
agree_t2 ~ frequ 0.222 0.105 0.339 0.362 3.708 0.000
d_agree_1 ~ agree_t2 -0.018 -0.155 0.120 -0.049 -0.255 0.799
d_agree_1 ~ frequ -0.051 -0.123 0.020 -0.229 -1.406 0.160
frequ ~~ frequ 0.408 0.269 0.546 1.000 5.757 0.000

The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (current-self) is not significantly different from zero, b = -0.051, p = 0.16.

6.6.3.5 Conscientiousness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5580.107 5675.792 0.995 0.032 0.034
# parameters of interest
params_lcs_consc_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t3 ~ consc_t2", "d_consc_1 =~ consc_t3", "d_consc_1 ~ consc_t2", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t2 ~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t2 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t3 ~ consc_t2 1.000 1.000 1.000 1.043 NA NA
d_consc_1 =~ consc_t3 1.000 1.000 1.000 0.594 NA NA
d_consc_1 ~1 0.895 0.312 1.478 2.068 3.008 0.003
consc_t2 ~1 3.507 3.412 3.602 4.615 72.539 0.000
d_consc_1 ~~ d_consc_1 0.162 0.084 0.239 0.862 4.102 0.000
consc_t2 ~ goals -0.406 -0.477 -0.334 -0.627 -11.135 0.000
d_consc_1 ~ consc_t2 -0.252 -0.416 -0.088 -0.443 -3.017 0.003
d_consc_1 ~ goals -0.051 -0.147 0.046 -0.138 -1.034 0.301
goals ~~ goals 1.381 1.076 1.686 1.000 8.875 0.000

The moderation effect of specific, facet-level change goals with the conscientiousness change score (current-self) is not significantly different from zero, b = -0.051, p = 0.301.

6.6.3.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5115.081 5210.766 0.99 0.045 0.036
# parameters of interest
params_lcs_consc_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_consc_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t3 ~ consc_t2", "d_consc_1 =~ consc_t3", "d_consc_1 ~ consc_t2", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t2 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t2 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t3 ~ consc_t2 1.000 1.000 1.000 1.039 NA NA
d_consc_1 =~ consc_t3 1.000 1.000 1.000 0.591 NA NA
d_consc_1 ~1 0.718 0.361 1.075 1.665 3.938 0.000
consc_t2 ~1 3.507 3.413 3.602 4.624 72.538 0.000
d_consc_1 ~~ d_consc_1 0.163 0.081 0.245 0.877 3.887 0.000
consc_t2 ~ frequ 0.183 0.005 0.360 0.151 2.018 0.044
d_consc_1 ~ consc_t2 -0.201 -0.297 -0.105 -0.354 -4.111 0.000
d_consc_1 ~ frequ 0.020 -0.089 0.130 0.030 0.366 0.714
frequ ~~ frequ 0.391 0.252 0.530 1.000 5.508 0.000

The moderation effect of the frequency of self-improvement behaviors with the conscientiousness change score (current-self) is not significantly different from zero, b = 0.02, p = 0.714.

6.6.3.7 Neuroticism: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5857.126 5952.81 0.99 0.045 0.028
# parameters of interest
params_lcs_neuro_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t3 ~ neuro_t2", "d_neuro_1 =~ neuro_t3", "d_neuro_1 ~ neuro_t2", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t2 ~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t2 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t3 ~ neuro_t2 1.000 1.000 1.000 1.024 NA NA
d_neuro_1 =~ neuro_t3 1.000 1.000 1.000 0.476 NA NA
d_neuro_1 ~1 0.406 0.058 0.754 1.113 2.286 0.022
neuro_t2 ~1 3.095 2.998 3.193 3.946 62.201 0.000
d_neuro_1 ~~ d_neuro_1 0.122 0.075 0.169 0.919 5.097 0.000
neuro_t2 ~ goals 0.465 0.365 0.565 0.651 9.124 0.000
d_neuro_1 ~ neuro_t2 -0.147 -0.256 -0.038 -0.316 -2.645 0.008
d_neuro_1 ~ goals 0.017 -0.069 0.104 0.052 0.391 0.695
goals ~~ goals 1.204 0.869 1.539 1.000 7.045 0.000

The moderation effect of specific, facet-level change goals with the neuroticism change score (current-self) is not significantly different from zero, b = 0.017, p = 0.695.

6.6.3.8 Neuroticism: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5257.822 5353.506 0.99 0.044 0.037
# parameters of interest
params_lcs_neuro_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_neuro_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t3 ~ neuro_t2", "d_neuro_1 =~ neuro_t3", "d_neuro_1 ~ neuro_t2", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t2 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t2 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t3 ~ neuro_t2 1.000 1.000 1.000 1.024 NA NA
d_neuro_1 =~ neuro_t3 1.000 1.000 1.000 0.476 NA NA
d_neuro_1 ~1 0.362 0.148 0.575 0.991 3.323 0.001
neuro_t2 ~1 3.095 2.998 3.193 3.947 62.215 0.000
d_neuro_1 ~~ d_neuro_1 0.122 0.075 0.169 0.919 5.099 0.000
neuro_t2 ~ frequ -0.078 -0.256 0.099 -0.063 -0.866 0.386
d_neuro_1 ~ neuro_t2 -0.133 -0.200 -0.065 -0.285 -3.849 0.000
d_neuro_1 ~ frequ -0.023 -0.128 0.082 -0.040 -0.431 0.667
frequ ~~ frequ 0.393 0.255 0.532 1.000 5.561 0.000

The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (current-self) is not significantly different from zero, b = -0.023, p = 0.667.

6.6.3.9 Openness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 5307.825 5403.51 0.983 0.055 0.035
# parameters of interest
params_lcs_openn_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t3 ~ openn_t2", "d_openn_1 =~ openn_t3", "d_openn_1 ~ openn_t2", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t2 ~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t2 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t3 ~ openn_t2 1.000 1.000 1.000 1.007 NA NA
d_openn_1 =~ openn_t3 1.000 1.000 1.000 0.438 NA NA
d_openn_1 ~1 0.316 -0.010 0.642 1.254 1.901 0.057
openn_t2 ~1 3.586 3.505 3.667 6.190 87.225 0.000
d_openn_1 ~~ d_openn_1 0.059 0.033 0.085 0.929 4.393 0.000
openn_t2 ~ goals -0.225 -0.331 -0.119 -0.307 -4.172 0.000
d_openn_1 ~ openn_t2 -0.083 -0.172 0.006 -0.191 -1.826 0.068
d_openn_1 ~ goals 0.043 -0.020 0.107 0.136 1.336 0.182
goals ~~ goals 0.625 0.396 0.853 1.000 5.358 0.000

The moderation effect of specific, facet-level change goals with the openness change score (current-self) is not significantly different from zero, b = 0.043, p = 0.182.

6.6.3.10 Openness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 26 4883.383 4979.068 0.991 0.037 0.038
# parameters of interest
params_lcs_openn_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_openn_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t3 ~ openn_t2", "d_openn_1 =~ openn_t3", "d_openn_1 ~ openn_t2", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t2 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t2 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t3 ~ openn_t2 1.000 1.000 1.000 1.006 NA NA
d_openn_1 =~ openn_t3 1.000 1.000 1.000 0.440 NA NA
d_openn_1 ~1 0.370 0.039 0.701 1.480 2.193 0.028
openn_t2 ~1 3.586 3.505 3.666 6.270 87.269 0.000
d_openn_1 ~~ d_openn_1 0.059 0.034 0.084 0.945 4.562 0.000
openn_t2 ~ frequ 0.263 0.112 0.413 0.287 3.422 0.001
d_openn_1 ~ openn_t2 -0.098 -0.188 -0.009 -0.225 -2.150 0.032
d_openn_1 ~ frequ -0.012 -0.094 0.071 -0.029 -0.275 0.783
frequ ~~ frequ 0.389 0.250 0.528 1.000 5.487 0.000

The moderation effect of the frequency of self-improvement behaviors with the openness change score (current-self) is not significantly different from zero, b = -0.012, p = 0.783.

6.6.4 Big Five traits (ideal self)

6.6.4.1 Extraversion: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6473.45 6572.849 0.994 0.02 0.033
# parameters of interest
params_lcs_extra_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # change goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.976 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.628 NA NA
d_extra_1 ~1 0.668 0.153 1.182 2.786 2.544 0.011
extra_t1 ~1 3.682 3.615 3.749 9.892 107.766 0.000
d_extra_1 ~~ d_extra_1 0.052 0.023 0.082 0.912 3.507 0.000
extra_t1 ~ goals 0.050 -0.094 0.193 0.077 0.677 0.498
d_extra_1 ~ extra_t1 -0.187 -0.324 -0.049 -0.290 -2.652 0.008
d_extra_1 ~ goals 0.039 -0.100 0.178 0.093 0.544 0.587
goals ~~ goals 0.332 0.012 0.652 1.000 2.037 0.042

The moderation effect of specific, facet-level change goals with the extraversion change score (ideal-self) is not significantly different from zero, b = 0.039, p = 0.587.

6.6.4.2 Extraversion: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5410.908 5510.307 0.994 0.022 0.036
# parameters of interest
params_lcs_extra_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_extra_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.975 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.628 NA NA
d_extra_1 ~1 0.784 0.245 1.322 3.334 2.852 0.004
extra_t1 ~1 3.682 3.615 3.749 10.096 107.889 0.000
d_extra_1 ~~ d_extra_1 0.049 0.021 0.077 0.884 3.414 0.001
extra_t1 ~ frequ 0.163 0.074 0.252 0.285 3.581 0.000
d_extra_1 ~ extra_t1 -0.218 -0.362 -0.074 -0.338 -2.967 0.003
d_extra_1 ~ frequ 0.073 -0.009 0.156 0.199 1.739 0.082
frequ ~~ frequ 0.408 0.272 0.545 1.000 5.857 0.000

The moderation effect of the frequency of self-improvement behaviors with the extraversion change score (ideal-self) is not significantly different from zero, b = 0.073, p = 0.082.

6.6.4.3 Agreeableness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6269.053 6368.452 0.978 0.047 0.048
# parameters of interest
params_lcs_agree_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # change goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.053 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.646 NA NA
d_agree_1 ~1 0.863 0.434 1.292 3.158 3.944 0.000
agree_t1 ~1 3.770 3.700 3.839 8.453 106.066 0.000
d_agree_1 ~~ d_agree_1 0.063 0.036 0.091 0.850 4.513 0.000
agree_t1 ~ goals -0.054 -0.126 0.017 -0.114 -1.487 0.137
d_agree_1 ~ agree_t1 -0.237 -0.349 -0.125 -0.387 -4.163 0.000
d_agree_1 ~ goals 0.001 -0.055 0.057 0.004 0.038 0.969
goals ~~ goals 0.882 0.584 1.181 1.000 5.789 0.000

The moderation effect of specific, facet-level change goals with the agreeableness change score (ideal-self) is not significantly different from zero, b = 0.001, p = 0.969.

6.6.4.4 Agreeableness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5258.589 5357.988 0.97 0.056 0.052
# parameters of interest
params_lcs_agree_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_agree_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.055 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.647 NA NA
d_agree_1 ~1 0.875 0.401 1.349 3.262 3.618 0.000
agree_t1 ~1 3.769 3.700 3.839 8.618 106.252 0.000
d_agree_1 ~~ d_agree_1 0.061 0.034 0.088 0.849 4.460 0.000
agree_t1 ~ frequ 0.166 0.069 0.263 0.242 3.363 0.001
d_agree_1 ~ agree_t1 -0.240 -0.363 -0.117 -0.392 -3.834 0.000
d_agree_1 ~ frequ 0.005 -0.079 0.088 0.011 0.108 0.914
frequ ~~ frequ 0.406 0.266 0.546 1.000 5.693 0.000

The moderation effect of the frequency of self-improvement behaviors with the agreeableness change score (ideal-self) is not significantly different from zero, b = 0.005, p = 0.914.

6.6.4.5 Conscientiousness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5871.279 5970.678 0.999 0.01 0.03
# parameters of interest
params_lcs_consc_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # change goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.936 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.623 NA NA
d_consc_1 ~1 0.642 -0.058 1.342 2.418 1.797 0.072
consc_t1 ~1 4.319 4.257 4.382 10.824 135.515 0.000
d_consc_1 ~~ d_consc_1 0.066 0.038 0.094 0.933 4.628 0.000
consc_t1 ~ goals 0.019 -0.025 0.062 0.054 0.835 0.404
d_consc_1 ~ consc_t1 -0.146 -0.304 0.011 -0.220 -1.820 0.069
d_consc_1 ~ goals -0.028 -0.070 0.013 -0.124 -1.362 0.173
goals ~~ goals 1.336 1.025 1.646 1.000 8.433 0.000

The moderation effect of specific, facet-level change goals with the conscientiousness change score (ideal-self) is not significantly different from zero, b = -0.028, p = 0.173.

6.6.4.6 Conscientiousness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 4875.211 4974.61 0.982 0.044 0.053
# parameters of interest
params_lcs_consc_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_consc_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.937 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.619 NA NA
d_consc_1 ~1 0.746 0.001 1.491 2.805 1.964 0.050
consc_t1 ~1 4.319 4.257 4.382 10.733 135.393 0.000
d_consc_1 ~~ d_consc_1 0.066 0.038 0.093 0.930 4.668 0.000
consc_t1 ~ frequ 0.144 0.057 0.230 0.229 3.246 0.001
d_consc_1 ~ consc_t1 -0.170 -0.339 -0.002 -0.258 -1.987 0.047
d_consc_1 ~ frequ 0.059 -0.017 0.134 0.142 1.517 0.129
frequ ~~ frequ 0.412 0.270 0.555 1.000 5.676 0.000

The frequency of self-improvement behaviors significantly moderates changes in conscientiousness (ideal-self), b = 0.059, p = 0.129.

6.6.4.7 Neuroticism: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6034.885 6134.285 0.999 0.008 0.024
# parameters of interest
params_lcs_neuro_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # change goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.943 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.755 NA NA
d_neuro_1 ~1 0.463 0.168 0.759 1.270 3.072 0.002
neuro_t1 ~1 1.707 1.648 1.766 3.748 56.783 0.000
d_neuro_1 ~~ d_neuro_1 0.118 0.077 0.159 0.887 5.641 0.000
neuro_t1 ~ goals -0.065 -0.122 -0.007 -0.157 -2.208 0.027
d_neuro_1 ~ neuro_t1 -0.247 -0.429 -0.064 -0.308 -2.653 0.008
d_neuro_1 ~ goals 0.031 -0.021 0.083 0.094 1.159 0.246
goals ~~ goals 1.227 0.897 1.557 1.000 7.280 0.000

The moderation effect of specific, facet-level change goals with the neuroticism change score (ideal-self) is not significantly different from zero, b = 0.031, p = 0.246.

6.6.4.8 Neuroticism: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 4896.303 4995.702 0.983 0.042 0.055
# parameters of interest
params_lcs_neuro_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_neuro_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.942 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.754 NA NA
d_neuro_1 ~1 0.498 0.177 0.820 1.367 3.037 0.002
neuro_t1 ~1 1.707 1.648 1.766 3.746 56.783 0.000
d_neuro_1 ~~ d_neuro_1 0.119 0.077 0.160 0.892 5.637 0.000
neuro_t1 ~ frequ -0.136 -0.248 -0.024 -0.192 -2.376 0.017
d_neuro_1 ~ neuro_t1 -0.267 -0.465 -0.070 -0.334 -2.656 0.008
d_neuro_1 ~ frequ -0.041 -0.143 0.061 -0.072 -0.785 0.432
frequ ~~ frequ 0.414 0.268 0.561 1.000 5.543 0.000

The moderation effect of the frequency of self-improvement behaviors with the neuroticism change score (ideal-self) is not significantly different from zero, b = -0.041, p = 0.432.

6.6.4.9 Openness: specific, facet-level change goals as moderator of change

Results summary (goals = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 6172.404 6271.803 0.976 0.053 0.061
# parameters of interest
params_lcs_openn_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # change goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.026 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.516 NA NA
d_openn_1 ~1 0.612 0.126 1.098 4.146 2.467 0.014
openn_t1 ~1 3.917 3.856 3.979 13.356 125.080 0.000
d_openn_1 ~~ d_openn_1 0.020 0.007 0.032 0.909 3.080 0.002
openn_t1 ~ goals -0.011 -0.066 0.043 -0.031 -0.415 0.678
d_openn_1 ~ openn_t1 -0.152 -0.273 -0.031 -0.302 -2.461 0.014
d_openn_1 ~ goals -0.002 -0.038 0.035 -0.009 -0.091 0.927
goals ~~ goals 0.629 0.417 0.842 1.000 5.801 0.000

The moderation effect of specific, facet-level change goals with the openness change score (ideal-self) is not significantly different from zero, b = -0.002, p = 0.927.

6.6.4.10 Openness: frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 26 5335.677 5435.077 0.949 0.071 0.072
# parameters of interest
params_lcs_openn_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_openn_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.033 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.516 NA NA
d_openn_1 ~1 0.647 0.151 1.142 4.323 2.558 0.011
openn_t1 ~1 3.917 3.856 3.979 13.070 124.999 0.000
d_openn_1 ~~ d_openn_1 0.020 0.007 0.033 0.895 3.037 0.002
openn_t1 ~ frequ 0.056 -0.025 0.136 0.118 1.363 0.173
d_openn_1 ~ openn_t1 -0.161 -0.284 -0.038 -0.322 -2.557 0.011
d_openn_1 ~ frequ 0.021 -0.032 0.073 0.087 0.775 0.438
frequ ~~ frequ 0.400 0.260 0.539 1.000 5.613 0.000

The moderation effect of the frequency of self-improvement behaviors with the openness change score (ideal-self) is not significantly different from zero, b = 0.021, p = 0.438.

6.6.5 Big Five facets (run models)

Run models for all facets with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific change goal

facet_template_mod_goal <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ ind_goal               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets -> change in current-self ratings
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  mod_name = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6")), facet_model_fit))
}  

# loop across 15 facets -> change in ideal-self ratings
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[6]], item_nrs) # ideal
  mod_name = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), template_filled)) # ideal
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp6")), facet_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current self ratings)

facet_template_mod_goal_fu <- '
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2
facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)

facet_t3 ~ 1*facet_t2     # This parameter regresses facet_t3 perfectly on facet_t2
d_facet_1 =~ 1*facet_t3   # This defines the latent change score factor as measured perfectly by scores on facet_t3
facet_t3 ~ 0*1            # This line constrains the intercept of facet_t3 to 0
facet_t3 ~~ 0*facet_t3    # This fixes the variance of facet_t3 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t2 ~ 1               # This estimates the intercept of facet_t2 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t2 ~~ facet_t2         # This estimates the variance of facet_t2 
facet_t2 ~ ind_goal               # This estimates the moderation effect on personality at T2
d_facet_1 ~ facet_t2 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t2 ~~ ind1_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind2_t2 ~~ ind2_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind3_t2 ~~ ind3_t3   # This allows residual covariance on indicator X3 across T2 and T3
ind4_t2 ~~ ind4_t3   # This allows residual covariance on indicator X4 across T2 and T3

ind1_t2 ~~ res1*ind1_t2   # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2   # This allows residual variance on indicator X2 at T2
ind3_t2 ~~ res3*ind3_t2   # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2   # This allows residual variance on indicator X4 at T2

ind1_t3 ~~ res1*ind1_t3  # This allows residual variance on indicator X1 at T3 
ind2_t3 ~~ res2*ind2_t3  # This allows residual variance on indicator X2 at T3 
ind3_t3 ~~ res3*ind3_t3  # This allows residual variance on indicator X3 at T3
ind4_t3 ~~ res4*ind4_t3  # This allows residual variance on indicator X4 at T3

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind2_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind3_t3 ~ m3*1     # This estimates the intercept of X3 at T3
ind4_t3 ~ m4*1     # This estimates the intercept of X4 at T3

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets -> change in current-self ratings
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  mod_name = paste0("sb07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal_fu, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp6_fu")), facet_model_fit))
}  

# 2nd, for frequency of self-improvement behavior

facet_template_mod_frequ <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 15 facets -> change in current-self ratings
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6")), facet_model_fit))
}  

# loop across 15 facets -> change in ideal-self ratings
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[6]], item_nrs) # ideal
  template_filled <- str_replace_all(facet_template_mod_frequ, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), template_filled)) # ideal
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp6")), facet_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current self ratings)

facet_template_mod_frequ_fu <- '
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2
facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)

frequ =~ 1*sb04_01_t2 + sb04_02_t2 + sb04_03_t2 # latent variable for moderator

facet_t3 ~ 1*facet_t2     # This parameter regresses facet_t3 perfectly on facet_t2
d_facet_1 =~ 1*facet_t3   # This defines the latent change score factor as measured perfectly by scores on facet_t3
facet_t3 ~ 0*1            # This line constrains the intercept of facet_t3 to 0
facet_t3 ~~ 0*facet_t3    # This fixes the variance of facet_t3 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t2 ~ 1               # This estimates the intercept of facet_t2 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t2 ~~ facet_t2         # This estimates the variance of facet_t2 
facet_t2 ~ frequ               # This estimates the moderation effect on personality at T2
d_facet_1 ~ facet_t2 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t2 ~~ ind1_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind2_t2 ~~ ind2_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind3_t2 ~~ ind3_t3   # This allows residual covariance on indicator X3 across T2 and T3
ind4_t2 ~~ ind4_t3   # This allows residual covariance on indicator X4 across T2 and T3

ind1_t2 ~~ res1*ind1_t2   # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2   # This allows residual variance on indicator X2 at T2
ind3_t2 ~~ res3*ind3_t2   # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2   # This allows residual variance on indicator X4 at T2

ind1_t3 ~~ res1*ind1_t3  # This allows residual variance on indicator X1 at T3 
ind2_t3 ~~ res2*ind2_t3  # This allows residual variance on indicator X2 at T3 
ind3_t3 ~~ res3*ind3_t3  # This allows residual variance on indicator X3 at T3
ind4_t3 ~~ res4*ind4_t3  # This allows residual variance on indicator X4 at T3

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind2_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind3_t3 ~ m3*1     # This estimates the intercept of X3 at T3
ind4_t3 ~ m4*1     # This estimates the intercept of X4 at T3

sb04_01_t2 ~~ sb04_01_t2
sb04_02_t2 ~~ sb04_02_t2
sb04_03_t2 ~~ sb04_03_t2

sb04_01_t2 ~ 1
sb04_02_t2 ~ 1
sb04_03_t2 ~ 1
'

# loop across 15 facets -> change in current-self ratings from T2 to T3
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post current
  items = paste0(bfi_versions[[5]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ_fu, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sb_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp6_fu")), facet_model_fit))
}  

6.6.6 Big Five facets (current self)

6.6.6.1 Sociability - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8035.567 8123.497 0.937 0.088 0.052
# parameters of interest
params_lcs_socia_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", "d_socia_1 ~ sb07_01_t1", # change goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.078 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.504 NA NA
d_socia_1 ~1 0.795 0.325 1.266 2.026 3.315 0.001
socia_t1 ~1 3.987 3.643 4.331 4.748 22.721 0.000
d_socia_1 ~~ d_socia_1 0.130 0.067 0.193 0.843 4.045 0.000
d_socia_1 ~ socia_t1 -0.205 -0.309 -0.101 -0.438 -3.851 0.000
d_socia_1 ~ sb07_01_t1 -0.036 -0.101 0.029 -0.116 -1.080 0.280
sb07_01_t1 ~~ sb07_01_t1 1.596 1.400 1.793 1.000 15.904 0.000

The moderation effect of the facet-specific change goal with the sociability change score (current-self) is not significantly different from zero, b = -0.036, p = 0.28.

6.6.6.2 Sociability - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9260.587 9375.278 0.938 0.075 0.066
# parameters of interest
params_lcs_socia_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_socia_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.082 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.505 NA NA
d_socia_1 ~1 0.547 0.305 0.789 1.439 4.426 0.000
socia_t1 ~1 2.875 2.747 3.003 3.530 44.063 0.000
d_socia_1 ~~ d_socia_1 0.108 0.051 0.165 0.748 3.700 0.000
socia_t1 ~ frequ -0.147 -0.336 0.042 -0.114 -1.520 0.129
d_socia_1 ~ socia_t1 -0.165 -0.252 -0.078 -0.353 -3.717 0.000
d_socia_1 ~ frequ 0.191 0.077 0.304 0.319 3.299 0.001
frequ ~~ frequ 0.403 0.264 0.542 1.000 5.689 0.000

The frequency of self-improvement behaviors significantly moderates changes in sociability (current-self) from T1 to T2, b = 0.191, p = 0.001.

6.6.6.3 Assertiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8326.72 8414.65 0.94 0.076 0.056
# parameters of interest
params_lcs_asser_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", "d_asser_1 ~ sb07_02_t1", # change goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 1.036 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.482 NA NA
d_asser_1 ~1 0.669 0.314 1.024 2.406 3.692 0.000
asser_t1 ~1 3.480 3.226 3.735 5.824 26.773 0.000
d_asser_1 ~~ d_asser_1 0.068 0.014 0.123 0.885 2.446 0.014
d_asser_1 ~ asser_t1 -0.160 -0.256 -0.063 -0.344 -3.250 0.001
d_asser_1 ~ sb07_02_t1 -0.033 -0.070 0.005 -0.153 -1.696 0.090
sb07_02_t1 ~~ sb07_02_t1 1.688 1.495 1.880 1.000 17.186 0.000

The moderation effect of the facet-specific change goal with the assertiveness change score (current-self) is not significantly different from zero, b = -0.033, p = 0.09.

6.6.6.4 Assertiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9480.491 9595.182 0.981 0.038 0.041
# parameters of interest
params_lcs_asser_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_asser_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 1.026 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.486 NA NA
d_asser_1 ~1 0.528 0.229 0.826 1.960 3.462 0.001
asser_t1 ~1 3.094 2.974 3.215 5.455 50.439 0.000
d_asser_1 ~~ d_asser_1 0.065 0.015 0.115 0.896 2.558 0.011
asser_t1 ~ frequ 0.195 0.048 0.342 0.215 2.597 0.009
d_asser_1 ~ asser_t1 -0.152 -0.247 -0.056 -0.320 -3.119 0.002
d_asser_1 ~ frequ 0.063 -0.024 0.149 0.146 1.422 0.155
frequ ~~ frequ 0.391 0.255 0.528 1.000 5.624 0.000

The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score (current-self) is not significantly different from zero, b = 0.063, p = 0.155.

6.6.6.5 Energy - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8428.622 8516.552 0.978 0.042 0.039
# parameters of interest
params_lcs_energ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", "d_energ_1 ~ sb07_03_t1", # change goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.075 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.481 NA NA
d_energ_1 ~1 0.374 0.082 0.666 2.473 2.510 0.012
energ_t1 ~1 2.309 2.079 2.539 6.830 19.653 0.000
d_energ_1 ~~ d_energ_1 0.019 -0.001 0.039 0.822 1.852 0.064
d_energ_1 ~ energ_t1 -0.121 -0.244 0.003 -0.270 -1.920 0.055
d_energ_1 ~ sb07_03_t1 -0.027 -0.055 0.002 -0.220 -1.841 0.066
sb07_03_t1 ~~ sb07_03_t1 1.571 1.373 1.769 1.000 15.560 0.000

The moderation effect of the facet-specific change goal with the energy change score (current-self) is not significantly different from zero, b = -0.027, p = 0.066.

6.6.6.6 Energy - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9657.041 9771.733 0.968 0.045 0.051
# parameters of interest
params_lcs_energ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_energ_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.077 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.487 NA NA
d_energ_1 ~1 0.464 0.179 0.749 2.948 3.195 0.001
energ_t1 ~1 2.771 2.663 2.880 7.954 50.194 0.000
d_energ_1 ~~ d_energ_1 0.019 -0.001 0.039 0.757 1.827 0.068
energ_t1 ~ frequ -0.068 -0.168 0.032 -0.121 -1.332 0.183
d_energ_1 ~ energ_t1 -0.189 -0.292 -0.085 -0.417 -3.586 0.000
d_energ_1 ~ frequ -0.081 -0.146 -0.015 -0.317 -2.410 0.016
frequ ~~ frequ 0.383 0.244 0.522 1.000 5.407 0.000

The moderation effect of the frequency of self-improvement behaviors with the energy change score (current-self) is not significantly different from zero (at p < . 001), b = -0.081, p = 0.016.

6.6.6.7 Compassion - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8251.835 8339.765 0.969 0.043 0.044
# parameters of interest
params_lcs_compa_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", "d_compa_1 ~ sb07_04_t1", # change goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.132 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.462 NA NA
d_compa_1 ~1 0.795 0.237 1.353 3.204 2.793 0.005
compa_t1 ~1 4.594 4.429 4.760 7.562 54.393 0.000
d_compa_1 ~~ d_compa_1 0.047 0.001 0.093 0.767 2.001 0.045
d_compa_1 ~ compa_t1 -0.178 -0.295 -0.061 -0.435 -2.972 0.003
d_compa_1 ~ sb07_04_t1 0.019 -0.026 0.065 0.106 0.833 0.405
sb07_04_t1 ~~ sb07_04_t1 1.843 1.662 2.024 1.000 19.989 0.000

The moderation effect of the facet-specific change goal with the compassion change score (current-self) is not significantly different from zero, b = 0.019, p = 0.405.

6.6.6.8 Compassion - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9379.957 9494.648 0.932 0.062 0.07
# parameters of interest
params_lcs_compa_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_compa_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.133 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.464 NA NA
d_compa_1 ~1 1.006 0.486 1.526 4.012 3.793 0.000
compa_t1 ~1 4.183 4.090 4.276 6.834 88.071 0.000
d_compa_1 ~~ d_compa_1 0.047 0.000 0.093 0.742 1.981 0.048
compa_t1 ~ frequ 0.269 0.084 0.453 0.278 2.855 0.004
d_compa_1 ~ compa_t1 -0.216 -0.336 -0.096 -0.527 -3.534 0.000
d_compa_1 ~ frequ 0.075 -0.043 0.193 0.189 1.244 0.214
frequ ~~ frequ 0.400 0.259 0.542 1.000 5.544 0.000

The frequency of self-improvement behaviors significantly moderates changes in compassion (current-self), b = 0.075, p = 0.214.

6.6.6.9 Respectfulness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7156.733 7244.663 0.951 0.064 0.062
# parameters of interest
params_lcs_respe_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", "d_respe_1 ~ sb07_05_t1", # change goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.166 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.637 NA NA
d_respe_1 ~1 1.399 0.662 2.136 4.481 3.719 0.000
respe_t1 ~1 4.849 4.719 4.979 8.483 73.056 0.000
d_respe_1 ~~ d_respe_1 0.071 0.030 0.112 0.729 3.376 0.001
d_respe_1 ~ respe_t1 -0.299 -0.450 -0.147 -0.547 -3.859 0.000
d_respe_1 ~ sb07_05_t1 -0.019 -0.059 0.022 -0.081 -0.911 0.362
sb07_05_t1 ~~ sb07_05_t1 1.826 1.606 2.045 1.000 16.293 0.000

The moderation effect of the facet-specific change goal with the respectfulness change score (current-self) is not significantly different from zero, b = -0.019, p = 0.362.

6.6.6.10 Respectfulness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 8302.649 8417.341 0.954 0.056 0.06
# parameters of interest
params_lcs_respe_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respe_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.167 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.639 NA NA
d_respe_1 ~1 1.243 0.540 1.946 3.977 3.464 0.001
respe_t1 ~1 4.474 4.395 4.552 7.847 111.809 0.000
d_respe_1 ~~ d_respe_1 0.071 0.030 0.112 0.731 3.414 0.001
respe_t1 ~ frequ 0.286 0.142 0.431 0.316 3.880 0.000
d_respe_1 ~ respe_t1 -0.274 -0.427 -0.120 -0.500 -3.495 0.000
d_respe_1 ~ frequ -0.026 -0.122 0.070 -0.053 -0.535 0.593
frequ ~~ frequ 0.396 0.261 0.531 1.000 5.753 0.000

The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score (current-self) is not significantly different from zero, b = -0.026, p = 0.593.

6.6.6.11 Trust - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8531.227 8619.157 0.95 0.059 0.056
# parameters of interest
params_lcs_trust_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", "d_trust_1 ~ sb07_06_t1", # change goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.073 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.514 NA NA
d_trust_1 ~1 0.463 0.127 0.799 1.476 2.702 0.007
trust_t1 ~1 2.586 2.344 2.828 3.946 20.933 0.000
d_trust_1 ~~ d_trust_1 0.083 0.016 0.150 0.839 2.418 0.016
d_trust_1 ~ trust_t1 -0.168 -0.284 -0.052 -0.351 -2.837 0.005
d_trust_1 ~ sb07_06_t1 -0.032 -0.084 0.020 -0.138 -1.211 0.226
sb07_06_t1 ~~ sb07_06_t1 1.828 1.657 2.000 1.000 20.862 0.000

The moderation effect of the facet-specific change goal with the trust change score (current-self) is not significantly different from zero, b = -0.032, p = 0.226.

6.6.6.12 Trust - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9655.017 9769.708 0.966 0.045 0.058
# parameters of interest
params_lcs_trust_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_trust_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.077 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.503 NA NA
d_trust_1 ~1 0.421 0.099 0.743 1.443 2.560 0.010
trust_t1 ~1 2.834 2.710 2.958 4.540 44.770 0.000
d_trust_1 ~~ d_trust_1 0.073 0.005 0.140 0.853 2.120 0.034
trust_t1 ~ frequ -0.126 -0.303 0.052 -0.127 -1.387 0.165
d_trust_1 ~ trust_t1 -0.181 -0.296 -0.066 -0.387 -3.088 0.002
d_trust_1 ~ frequ -0.022 -0.131 0.087 -0.047 -0.395 0.693
frequ ~~ frequ 0.395 0.258 0.531 1.000 5.656 0.000

The moderation effect of the self-improvement behaviors with the trust change score (current-self) is not significantly different from zero, b = -0.022, p = 0.693.

6.6.6.13 Organization - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7983.001 8070.931 0.957 0.076 0.043
# parameters of interest
params_lcs_organ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", "d_organ_1 ~ sb07_07_t1", # change goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.016 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.446 NA NA
d_organ_1 ~1 0.224 -0.013 0.461 0.457 1.853 0.064
organ_t1 ~1 1.266 0.956 1.577 1.133 7.992 0.000
d_organ_1 ~~ d_organ_1 0.225 0.092 0.359 0.935 3.302 0.001
d_organ_1 ~ organ_t1 -0.111 -0.239 0.017 -0.252 -1.694 0.090
d_organ_1 ~ sb07_07_t1 -0.001 -0.085 0.083 -0.003 -0.027 0.979
sb07_07_t1 ~~ sb07_07_t1 2.197 2.005 2.390 1.000 22.378 0.000

The moderation effect of the facet-specific change goal with the organization change score (current-self) is not significantly different from zero, b = -0.001, p = 0.979.

6.6.6.14 Organization - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9180.5 9295.191 0.977 0.047 0.04
# parameters of interest
params_lcs_organ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_organ_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.014 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.454 NA NA
d_organ_1 ~1 0.250 -0.006 0.505 0.544 1.915 0.056
organ_t1 ~1 2.856 2.708 3.003 2.786 37.969 0.000
d_organ_1 ~~ d_organ_1 0.196 0.082 0.309 0.930 3.369 0.001
organ_t1 ~ frequ -0.214 -0.455 0.027 -0.131 -1.742 0.082
d_organ_1 ~ organ_t1 -0.118 -0.208 -0.028 -0.264 -2.571 0.010
d_organ_1 ~ frequ -0.054 -0.193 0.086 -0.074 -0.756 0.450
frequ ~~ frequ 0.395 0.257 0.534 1.000 5.590 0.000

The moderation effect of the frequency of self-improvement behaviors with the organization change score (current-self) is not significantly different from zero, b = -0.054, p = 0.45.

6.6.6.15 Productiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7978.471 8066.401 0.953 0.075 0.055
# parameters of interest
params_lcs_produ_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", "d_produ_1 ~ sb07_08_t1", # change goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.019 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.651 NA NA
d_produ_1 ~1 0.551 0.169 0.933 0.908 2.824 0.005
produ_t1 ~1 1.763 1.422 2.105 1.857 10.120 0.000
d_produ_1 ~~ d_produ_1 0.318 0.167 0.469 0.863 4.119 0.000
d_produ_1 ~ produ_t1 -0.289 -0.442 -0.135 -0.451 -3.693 0.000
d_produ_1 ~ sb07_08_t1 0.071 -0.017 0.160 0.162 1.585 0.113
sb07_08_t1 ~~ sb07_08_t1 1.898 1.650 2.147 1.000 14.989 0.000

The moderation effect of the facet-specific change goal with the productiveness change score (current-self) is not significantly different from zero, b = 0.071, p = 0.113.

6.6.6.16 Productiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9215.556 9330.247 0.956 0.062 0.053
# parameters of interest
params_lcs_produ_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_produ_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.022 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.657 NA NA
d_produ_1 ~1 0.656 0.249 1.064 1.095 3.157 0.002
produ_t1 ~1 3.417 3.283 3.550 3.664 50.196 0.000
d_produ_1 ~~ d_produ_1 0.305 0.150 0.460 0.847 3.850 0.000
produ_t1 ~ frequ -0.166 -0.396 0.065 -0.111 -1.406 0.160
d_produ_1 ~ produ_t1 -0.240 -0.356 -0.123 -0.373 -4.032 0.000
d_produ_1 ~ frequ -0.159 -0.320 0.003 -0.166 -1.925 0.054
frequ ~~ frequ 0.391 0.252 0.531 1.000 5.492 0.000

The frequency of self-improvement behaviors significantly moderates changes in productiveness (current-self), b = -0.159, p = 0.054.

6.6.6.17 Responsibility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8278.143 8366.073 0.922 0.082 0.077
# parameters of interest
params_lcs_respo_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", "d_respo_1 ~ sb07_09_t1", # change goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.043 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.550 NA NA
d_respo_1 ~1 0.764 0.220 1.307 3.007 2.755 0.006
respo_t1 ~1 4.055 3.858 4.253 8.412 40.172 0.000
d_respo_1 ~~ d_respo_1 0.057 0.013 0.101 0.883 2.560 0.010
d_respo_1 ~ respo_t1 -0.190 -0.317 -0.063 -0.360 -2.922 0.003
d_respo_1 ~ sb07_09_t1 -0.008 -0.046 0.030 -0.044 -0.393 0.694
sb07_09_t1 ~~ sb07_09_t1 2.197 2.012 2.381 1.000 23.307 0.000

The moderation effect of the facet-specific change goal with the responsibility change score (current-self) is not significantly different from zero, b = -0.008, p = 0.694.

6.6.6.18 Responsibility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9394.541 9509.232 0.921 0.074 0.08
# parameters of interest
params_lcs_respo_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respo_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.043 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.551 NA NA
d_respo_1 ~1 0.708 0.330 1.085 2.722 3.677 0.000
respo_t1 ~1 3.598 3.493 3.703 7.308 67.244 0.000
d_respo_1 ~~ d_respo_1 0.060 0.013 0.107 0.883 2.489 0.013
respo_t1 ~ frequ 0.052 -0.080 0.184 0.066 0.771 0.441
d_respo_1 ~ respo_t1 -0.181 -0.283 -0.078 -0.342 -3.456 0.001
d_respo_1 ~ frequ 0.010 -0.081 0.101 0.024 0.217 0.829
frequ ~~ frequ 0.394 0.255 0.532 1.000 5.570 0.000

The moderation effect of the frequency of self-improvement behaviors with the responsibility change score (current-self) is not significantly different from zero, b = 0.01, p = 0.829.

6.6.6.19 Anxiety - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8282.415 8370.345 0.993 0.026 0.037
# parameters of interest
params_lcs_anxie_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", "d_anxie_1 ~ sb07_10_t1", # change goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.026 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.473 NA NA
d_anxie_1 ~1 0.009 -0.671 0.690 0.022 0.027 0.979
anxie_t1 ~1 4.233 3.930 4.535 4.572 27.434 0.000
d_anxie_1 ~~ d_anxie_1 0.158 0.062 0.254 0.868 3.238 0.001
d_anxie_1 ~ anxie_t1 -0.039 -0.189 0.110 -0.085 -0.517 0.605
d_anxie_1 ~ sb07_10_t1 0.085 0.000 0.171 0.301 1.957 0.050
sb07_10_t1 ~~ sb07_10_t1 2.277 2.041 2.512 1.000 18.979 0.000

The moderation effect of the facet-specific change goal with the anxiety change score (current-self) is not significantly different from zero (at p < .001), b = 0.085, p = 0.05.

6.6.6.20 Anxiety - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9463.499 9578.19 0.977 0.04 0.046
# parameters of interest
params_lcs_anxie_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_anxie_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.029 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.472 NA NA
d_anxie_1 ~1 0.581 0.291 0.870 1.344 3.931 0.000
anxie_t1 ~1 2.748 2.613 2.883 2.913 39.911 0.000
d_anxie_1 ~~ d_anxie_1 0.170 0.073 0.266 0.908 3.438 0.001
anxie_t1 ~ frequ -0.028 -0.266 0.209 -0.019 -0.234 0.815
d_anxie_1 ~ anxie_t1 -0.132 -0.231 -0.034 -0.289 -2.637 0.008
d_anxie_1 ~ frequ 0.059 -0.100 0.218 0.086 0.727 0.467
frequ ~~ frequ 0.398 0.258 0.539 1.000 5.553 0.000

The moderation effect of the frequency of self-improvement behaviors with the anxiety change score (current-self) is not significantly different from zero, b = 0.059, p = 0.467.

6.6.6.21 Depression - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8187.961 8275.891 0.956 0.079 0.055
# parameters of interest
params_lcs_depre_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", "d_depre_1 ~ sb07_11_t1", # change goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.055 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.583 NA NA
d_depre_1 ~1 1.192 0.525 1.859 3.303 3.503 0.000
depre_t1 ~1 4.028 3.839 4.217 6.168 41.841 0.000
d_depre_1 ~~ d_depre_1 0.109 0.060 0.159 0.840 4.354 0.000
d_depre_1 ~ depre_t1 -0.299 -0.460 -0.137 -0.540 -3.620 0.000
d_depre_1 ~ sb07_11_t1 -0.052 -0.113 0.008 -0.234 -1.691 0.091
sb07_11_t1 ~~ sb07_11_t1 2.607 2.417 2.797 1.000 26.876 0.000

The moderation effect of the facet-specific change goal with the depression change score (current-self) is not significantly different from zero, b = -0.052, p = 0.091.

6.6.6.22 Depression - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9417.201 9531.892 0.928 0.084 0.079
# parameters of interest
params_lcs_depre_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_depre_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.057 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.588 NA NA
d_depre_1 ~1 0.744 0.471 1.017 2.000 5.347 0.000
depre_t1 ~1 3.037 2.916 3.158 4.539 49.287 0.000
d_depre_1 ~~ d_depre_1 0.119 0.064 0.174 0.858 4.225 0.000
depre_t1 ~ frequ -0.015 -0.177 0.147 -0.014 -0.181 0.857
d_depre_1 ~ depre_t1 -0.206 -0.295 -0.118 -0.371 -4.578 0.000
d_depre_1 ~ frequ 0.034 -0.063 0.130 0.057 0.680 0.496
frequ ~~ frequ 0.395 0.254 0.536 1.000 5.497 0.000

The moderation effect of the frequency of self-improvement behaviors with the depression change score (current-self) is not significantly different from zero, b = 0.034, p = 0.496.

6.6.6.23 Volatility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8350.284 8438.215 0.989 0.036 0.032
# parameters of interest
params_lcs_volat_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", "d_volat_1 ~ sb07_12_t1", # change goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.159 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.666 NA NA
d_volat_1 ~1 0.679 0.407 0.951 1.187 4.888 0.000
volat_t1 ~1 2.471 2.224 2.718 2.485 19.599 0.000
d_volat_1 ~~ d_volat_1 0.238 0.148 0.328 0.728 5.172 0.000
d_volat_1 ~ volat_t1 -0.317 -0.411 -0.223 -0.551 -6.593 0.000
d_volat_1 ~ sb07_12_t1 0.048 -0.016 0.111 0.121 1.460 0.144
sb07_12_t1 ~~ sb07_12_t1 2.103 1.911 2.296 1.000 21.428 0.000

The moderation effect of the facet-specific change goal with the volatility change score (current-self) is not significantly different from zero, b = 0.048, p = 0.144.

6.6.6.24 Volatility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9461.255 9575.946 1 0 0.028
# parameters of interest
params_lcs_volat_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_volat_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.158 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.664 NA NA
d_volat_1 ~1 0.730 0.459 1.001 1.289 5.271 0.000
volat_t1 ~1 3.117 2.978 3.256 3.161 43.892 0.000
d_volat_1 ~~ d_volat_1 0.237 0.147 0.328 0.741 5.129 0.000
volat_t1 ~ frequ -0.055 -0.285 0.175 -0.035 -0.466 0.641
d_volat_1 ~ volat_t1 -0.291 -0.378 -0.204 -0.507 -6.522 0.000
d_volat_1 ~ frequ 0.028 -0.124 0.179 0.031 0.358 0.720
frequ ~~ frequ 0.396 0.259 0.533 1.000 5.651 0.000

The moderation effect of the frequency of self-improvement behaviors with the volatility change score (current-self) is significantly different from zero, b = 0.028, p = 0.72.

6.6.6.25 Curiosity - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8110.242 8198.172 0.994 0.02 0.037
# parameters of interest
params_lcs_curio_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", "d_curio_1 ~ sb07_13_t1", # change goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.992 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.434 NA NA
d_curio_1 ~1 0.148 -0.590 0.886 0.768 0.394 0.694
curio_t1 ~1 4.460 4.315 4.605 10.107 60.268 0.000
d_curio_1 ~~ d_curio_1 0.034 -0.002 0.069 0.902 1.851 0.064
d_curio_1 ~ curio_t1 -0.048 -0.209 0.113 -0.109 -0.581 0.561
d_curio_1 ~ sb07_13_t1 0.038 -0.004 0.080 0.257 1.783 0.075
sb07_13_t1 ~~ sb07_13_t1 1.720 1.528 1.912 1.000 17.525 0.000

The moderation effect of the facet-specific change goal with the curiosity change score (current-self) is not significantly different from zero, b = 0.038, p = 0.075.

6.6.6.26 Curiosity - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9264.735 9379.427 0.981 0.033 0.051
# parameters of interest
params_lcs_curio_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_curio_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.993 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.429 NA NA
d_curio_1 ~1 0.472 -0.129 1.072 2.467 1.540 0.124
curio_t1 ~1 4.182 4.095 4.269 9.450 93.719 0.000
d_curio_1 ~~ d_curio_1 0.029 -0.003 0.062 0.804 1.775 0.076
curio_t1 ~ frequ 0.071 -0.057 0.199 0.101 1.091 0.275
d_curio_1 ~ curio_t1 -0.104 -0.243 0.036 -0.240 -1.459 0.145
d_curio_1 ~ frequ 0.121 0.034 0.208 0.397 2.718 0.007
frequ ~~ frequ 0.394 0.255 0.533 1.000 5.559 0.000

The moderation effect of the frequency of self-improvement behaviors with the curiosity change score (current-self) is not significantly different from zero (at p < .001), b = 0.121, p = 0.007.

6.6.6.27 Aesthetic - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8395.355 8483.285 0.999 0.01 0.035
# parameters of interest
params_lcs_aesth_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", "d_aesth_1 ~ sb07_14_t1", # change goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 1.001 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.488 NA NA
d_aesth_1 ~1 0.340 0.059 0.620 3.438 2.370 0.018
aesth_t1 ~1 2.929 2.795 3.062 14.460 42.966 0.000
d_aesth_1 ~~ d_aesth_1 0.009 -0.005 0.024 0.939 1.245 0.213
d_aesth_1 ~ aesth_t1 -0.120 -0.216 -0.023 -0.245 -2.427 0.015
d_aesth_1 ~ sb07_14_t1 0.002 -0.011 0.014 0.023 0.254 0.800
sb07_14_t1 ~~ sb07_14_t1 1.960 1.782 2.138 1.000 21.634 0.000

The moderation effect of the facet-specific change goal with the aesthetic change score (current-self) is not significantly different from zero, b = 0.002, p = 0.8.

6.6.6.28 Aesthetic - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9481.735 9596.426 0.99 0.028 0.047
# parameters of interest
params_lcs_aesth_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_aesth_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 1.000 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.488 NA NA
d_aesth_1 ~1 0.341 0.042 0.640 3.407 2.233 0.026
aesth_t1 ~1 2.934 2.810 3.058 14.304 46.393 0.000
d_aesth_1 ~~ d_aesth_1 0.009 -0.005 0.024 0.941 1.258 0.209
aesth_t1 ~ frequ -0.071 -0.147 0.006 -0.216 -1.806 0.071
d_aesth_1 ~ aesth_t1 -0.119 -0.222 -0.015 -0.243 -2.247 0.025
d_aesth_1 ~ frequ 0.000 -0.034 0.034 0.001 0.005 0.996
frequ ~~ frequ 0.394 0.253 0.535 1.000 5.463 0.000

The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score (current-self) is not significantly different from zero, b = 0, p = 0.996.

6.6.6.29 Imagination - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7978.148 8066.078 0.951 0.065 0.053
# parameters of interest
params_lcs_imagi_curr_specif_hyp6 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", "d_imagi_1 ~ sb07_15_t1", # change goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.020 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.481 NA NA
d_imagi_1 ~1 0.684 0.134 1.234 2.021 2.439 0.015
imagi_t1 ~1 4.176 3.985 4.367 5.815 42.897 0.000
d_imagi_1 ~~ d_imagi_1 0.105 0.042 0.169 0.919 3.250 0.001
d_imagi_1 ~ imagi_t1 -0.143 -0.264 -0.021 -0.303 -2.304 0.021
d_imagi_1 ~ sb07_15_t1 -0.018 -0.068 0.032 -0.075 -0.695 0.487
sb07_15_t1 ~~ sb07_15_t1 2.017 1.837 2.198 1.000 21.908 0.000

The moderation effect of the facet-specific change goal with the imagination change score (current-self) is not significantly different from zero, b = -0.018, p = 0.487.

6.6.6.30 Imagination - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9083.231 9197.922 0.962 0.052 0.052
# parameters of interest
params_lcs_imagi_curr_frequ_hyp6 <- broom::tidy(fit_mi_lcs_imagi_curr_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.023 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.488 NA NA
d_imagi_1 ~1 0.691 0.254 1.127 1.982 3.102 0.002
imagi_t1 ~1 3.644 3.544 3.744 4.989 71.301 0.000
d_imagi_1 ~~ d_imagi_1 0.107 0.042 0.171 0.879 3.249 0.001
imagi_t1 ~ frequ 0.277 0.085 0.469 0.237 2.821 0.005
d_imagi_1 ~ imagi_t1 -0.159 -0.274 -0.045 -0.334 -2.726 0.006
d_imagi_1 ~ frequ 0.114 -0.012 0.241 0.205 1.777 0.076
frequ ~~ frequ 0.389 0.256 0.523 1.000 5.707 0.000

The moderation effect of the frequency of self-improvement behaviors with the imagination change score (current-self) is not significantly different from zero, b = 0.114, p = 0.076.

6.6.7 Big Five facets (current self - follow-up T3)

6.6.7.1 Sociability - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6930.966 7015.61 0.965 0.066 0.049
# parameters of interest
params_lcs_socia_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t3 ~ socia_t2", "d_socia_1 =~ socia_t3", "d_socia_1 ~ socia_t2", # change parameters
                     "d_socia_1 ~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", "d_socia_1 ~ sb07_01_t1", # change goals
                     "d_socia_1 ~1 ", "socia_t2 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t3 ~ socia_t2 1.000 1.000 1.000 0.974 NA NA
d_socia_1 =~ socia_t3 1.000 1.000 1.000 0.475 NA NA
d_socia_1 ~1 0.363 -0.135 0.862 1.008 1.429 0.153
socia_t2 ~1 4.005 3.678 4.332 5.415 24.014 0.000
d_socia_1 ~~ d_socia_1 0.125 0.060 0.190 0.964 3.772 0.000
d_socia_1 ~ socia_t2 -0.096 -0.207 0.015 -0.197 -1.698 0.090
d_socia_1 ~ sb07_01_t1 -0.006 -0.073 0.061 -0.021 -0.175 0.861
sb07_01_t1 ~~ sb07_01_t1 1.587 1.374 1.800 1.000 14.600 0.000

The moderation effect of the facet-specific change goal with the sociability change score (current-self) from T2 to T3 is not significantly different from zero, b = -0.006, p = 0.861.

6.6.7.2 Sociability - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8296.975 8407.38 0.954 0.067 0.069
# parameters of interest
params_lcs_socia_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_socia_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t3 ~ socia_t2", "d_socia_1 =~ socia_t3", "d_socia_1 ~ socia_t2", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t2 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t2 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t3 ~ socia_t2 1.000 1.000 1.000 0.973 NA NA
d_socia_1 =~ socia_t3 1.000 1.000 1.000 0.475 NA NA
d_socia_1 ~1 0.324 0.033 0.615 0.920 2.180 0.029
socia_t2 ~1 3.059 2.925 3.193 4.242 44.839 0.000
d_socia_1 ~~ d_socia_1 0.119 0.055 0.184 0.964 3.637 0.000
socia_t2 ~ frequ 0.028 -0.154 0.211 0.025 0.303 0.762
d_socia_1 ~ socia_t2 -0.091 -0.187 0.005 -0.186 -1.848 0.065
d_socia_1 ~ frequ -0.021 -0.134 0.093 -0.037 -0.357 0.721
frequ ~~ frequ 0.397 0.256 0.538 1.000 5.524 0.000

The moderation effect of the frequency of self-improvement behaviors with the sociability change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.021, p = 0.721.

6.6.7.3 Assertiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7262.607 7347.251 0.962 0.059 0.05
# parameters of interest
params_lcs_asser_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t3 ~ asser_t2", "d_asser_1 =~ asser_t3", "d_asser_1 ~ asser_t2", # change parameters
                     "d_asser_1 ~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", "d_asser_1 ~ sb07_02_t1", # change goals
                     "d_asser_1 ~1 ", "asser_t2 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t3 ~ asser_t2 1.000 1.000 1.000 1.001 NA NA
d_asser_1 =~ asser_t3 1.000 1.000 1.000 0.494 NA NA
d_asser_1 ~1 0.329 -0.099 0.757 1.211 1.506 0.132
asser_t2 ~1 3.505 3.225 3.784 6.371 24.599 0.000
d_asser_1 ~~ d_asser_1 0.069 0.008 0.130 0.933 2.224 0.026
d_asser_1 ~ asser_t2 -0.114 -0.229 0.001 -0.231 -1.938 0.053
d_asser_1 ~ sb07_02_t1 0.016 -0.025 0.056 0.075 0.765 0.444
sb07_02_t1 ~~ sb07_02_t1 1.689 1.486 1.891 1.000 16.348 0.000

The moderation effect of the facet-specific change goal with the assertiveness change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.016, p = 0.444.

6.6.7.4 Assertiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8549.876 8660.281 0.992 0.026 0.043
# parameters of interest
params_lcs_asser_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_asser_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t3 ~ asser_t2", "d_asser_1 =~ asser_t3", "d_asser_1 ~ asser_t2", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t2 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t2 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t3 ~ asser_t2 1.000 1.000 1.000 1.000 NA NA
d_asser_1 =~ asser_t3 1.000 1.000 1.000 0.505 NA NA
d_asser_1 ~1 0.450 0.111 0.790 1.784 2.601 0.009
asser_t2 ~1 3.174 3.051 3.298 6.356 50.321 0.000
d_asser_1 ~~ d_asser_1 0.059 0.008 0.111 0.932 2.255 0.024
asser_t2 ~ frequ 0.205 0.078 0.332 0.257 3.160 0.002
d_asser_1 ~ asser_t2 -0.136 -0.243 -0.029 -0.269 -2.494 0.013
d_asser_1 ~ frequ 0.026 -0.055 0.108 0.065 0.636 0.525
frequ ~~ frequ 0.390 0.255 0.525 1.000 5.669 0.000

The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.026, p = 0.525.

6.6.7.5 Energy - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7225.895 7310.539 0.962 0.057 0.062
# parameters of interest
params_lcs_energ_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t3 ~ energ_t2", "d_energ_1 =~ energ_t3", "d_energ_1 ~ energ_t2", # change parameters
                     "d_energ_1 ~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", "d_energ_1 ~ sb07_03_t1", # change goals
                     "d_energ_1 ~1 ", "energ_t2 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t3 ~ energ_t2 1.000 1.000 1.000 1.016 NA NA
d_energ_1 =~ energ_t3 1.000 1.000 1.000 0.619 NA NA
d_energ_1 ~1 0.550 0.220 0.881 3.361 3.262 0.001
energ_t2 ~1 2.450 2.242 2.658 9.113 23.072 0.000
d_energ_1 ~~ d_energ_1 0.023 -0.002 0.049 0.875 1.783 0.075
d_energ_1 ~ energ_t2 -0.228 -0.370 -0.086 -0.374 -3.143 0.002
d_energ_1 ~ sb07_03_t1 0.017 -0.008 0.043 0.134 1.324 0.186
sb07_03_t1 ~~ sb07_03_t1 1.598 1.386 1.811 1.000 14.753 0.000

The moderation effect of the facet-specific change goal with the energy change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.017, p = 0.186.

6.6.7.6 Energy - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8553.011 8663.416 0.957 0.056 0.063
# parameters of interest
params_lcs_energ_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_energ_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t3 ~ energ_t2", "d_energ_1 =~ energ_t3", "d_energ_1 ~ energ_t2", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t2 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t2 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t3 ~ energ_t2 1.000 1.000 1.000 1.019 NA NA
d_energ_1 =~ energ_t3 1.000 1.000 1.000 0.620 NA NA
d_energ_1 ~1 0.584 0.248 0.920 3.278 3.411 0.001
energ_t2 ~1 2.700 2.587 2.812 9.222 46.966 0.000
d_energ_1 ~~ d_energ_1 0.028 -0.003 0.059 0.882 1.791 0.073
energ_t2 ~ frequ -0.131 -0.262 0.000 -0.276 -1.965 0.049
d_energ_1 ~ energ_t2 -0.217 -0.341 -0.094 -0.357 -3.446 0.001
d_energ_1 ~ frequ -0.023 -0.084 0.038 -0.081 -0.751 0.453
frequ ~~ frequ 0.382 0.246 0.517 1.000 5.502 0.000

The moderation effect of the frequency of self-improvement behaviors with the energy change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.023, p = 0.453.

6.6.7.7 Compassion - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7068.754 7153.398 0.947 0.06 0.062
# parameters of interest
params_lcs_compa_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t3 ~ compa_t2", "d_compa_1 =~ compa_t3", "d_compa_1 ~ compa_t2", # change parameters
                     "d_compa_1 ~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", "d_compa_1 ~ sb07_04_t1", # change goals
                     "d_compa_1 ~1 ", "compa_t2 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t3 ~ compa_t2 1.000 1.000 1.000 0.915 NA NA
d_compa_1 =~ compa_t3 1.000 1.000 1.000 0.391 NA NA
d_compa_1 ~1 0.356 -0.607 1.320 1.345 0.725 0.469
compa_t2 ~1 4.540 4.354 4.726 7.311 47.955 0.000
d_compa_1 ~~ d_compa_1 0.055 -0.029 0.138 0.782 1.289 0.197
d_compa_1 ~ compa_t2 -0.038 -0.250 0.174 -0.089 -0.352 0.725
d_compa_1 ~ sb07_04_t1 -0.093 -0.153 -0.033 -0.478 -3.037 0.002
sb07_04_t1 ~~ sb07_04_t1 1.845 1.652 2.037 1.000 18.759 0.000

The moderation effect of the facet-specific change goal with the compassion change score from T2 to T3 (current-self) is not significantly different from zero (at p < . 001), b = -0.093, p = 0.002.

6.6.7.8 Compassion - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8349.071 8459.476 0.926 0.068 0.081
# parameters of interest
params_lcs_compa_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_compa_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t3 ~ compa_t2", "d_compa_1 =~ compa_t3", "d_compa_1 ~ compa_t2", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t2 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t2 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t3 ~ compa_t2 1.000 1.000 1.000 0.917 NA NA
d_compa_1 =~ compa_t3 1.000 1.000 1.000 0.371 NA NA
d_compa_1 ~1 -0.216 -1.307 0.875 -0.806 -0.388 0.698
compa_t2 ~1 4.280 4.186 4.373 6.467 89.925 0.000
d_compa_1 ~~ d_compa_1 0.070 -0.037 0.176 0.969 1.277 0.202
compa_t2 ~ frequ 0.338 0.159 0.518 0.327 3.695 0.000
d_compa_1 ~ compa_t2 0.037 -0.208 0.282 0.091 0.296 0.767
d_compa_1 ~ frequ -0.077 -0.225 0.072 -0.183 -1.010 0.313
frequ ~~ frequ 0.410 0.269 0.551 1.000 5.698 0.000

The moderation effect of the frequency of self-improvement behaviors with the compassion change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.077, p = 0.313.

6.6.7.9 Respectfulness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6160.624 6245.268 0.986 0.034 0.045
# parameters of interest
params_lcs_respe_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t3 ~ respe_t2", "d_respe_1 =~ respe_t3", "d_respe_1 ~ respe_t2", # change parameters
                     "d_respe_1 ~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", "d_respe_1 ~ sb07_05_t1", # change goals
                     "d_respe_1 ~1 ", "respe_t2 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t3 ~ respe_t2 1.000 1.000 1.000 0.918 NA NA
d_respe_1 =~ respe_t3 1.000 1.000 1.000 0.366 NA NA
d_respe_1 ~1 -0.168 -0.933 0.597 -0.993 -0.431 0.666
respe_t2 ~1 4.735 4.628 4.843 11.148 86.427 0.000
d_respe_1 ~~ d_respe_1 0.028 -0.006 0.062 0.985 1.625 0.104
d_respe_1 ~ respe_t2 0.031 -0.127 0.188 0.077 0.380 0.704
d_respe_1 ~ sb07_05_t1 0.016 -0.021 0.053 0.127 0.839 0.401
sb07_05_t1 ~~ sb07_05_t1 1.849 1.617 2.081 1.000 15.617 0.000

The moderation effect of the facet-specific change goal with the respectfulness change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.016, p = 0.401.

6.6.7.10 Respectfulness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 7442.348 7552.753 0.974 0.043 0.052
# parameters of interest
params_lcs_respe_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_respe_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t3 ~ respe_t2", "d_respe_1 =~ respe_t3", "d_respe_1 ~ respe_t2", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t2 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t2 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t3 ~ respe_t2 1.000 1.000 1.000 0.917 NA NA
d_respe_1 =~ respe_t3 1.000 1.000 1.000 0.367 NA NA
d_respe_1 ~1 -0.138 -0.850 0.575 -0.811 -0.379 0.705
respe_t2 ~1 4.489 4.420 4.559 10.600 127.169 0.000
d_respe_1 ~~ d_respe_1 0.028 -0.006 0.062 0.964 1.590 0.112
respe_t2 ~ frequ 0.158 0.049 0.266 0.235 2.851 0.004
d_respe_1 ~ respe_t2 0.032 -0.123 0.187 0.080 0.403 0.687
d_respe_1 ~ frequ -0.051 -0.134 0.031 -0.192 -1.216 0.224
frequ ~~ frequ 0.399 0.262 0.537 1.000 5.691 0.000

The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.051, p = 0.224.

6.6.7.11 Trust - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7402.299 7486.943 0.965 0.051 0.053
# parameters of interest
params_lcs_trust_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t3 ~ trust_t2", "d_trust_1 =~ trust_t3", "d_trust_1 ~ trust_t2", # change parameters
                     "d_trust_1 ~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", "d_trust_1 ~ sb07_06_t1", # change goals
                     "d_trust_1 ~1 ", "trust_t2 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t3 ~ trust_t2 1.000 1.000 1.000 0.960 NA NA
d_trust_1 =~ trust_t3 1.000 1.000 1.000 0.329 NA NA
d_trust_1 ~1 0.039 -0.334 0.411 0.213 0.203 0.839
trust_t2 ~1 2.585 2.355 2.815 4.883 22.023 0.000
d_trust_1 ~~ d_trust_1 0.033 -0.011 0.076 0.995 1.467 0.142
d_trust_1 ~ trust_t2 -0.018 -0.166 0.130 -0.053 -0.240 0.810
d_trust_1 ~ sb07_06_t1 0.007 -0.037 0.052 0.053 0.311 0.755
sb07_06_t1 ~~ sb07_06_t1 1.847 1.664 2.031 1.000 19.773 0.000

The moderation effect of the facet-specific change goal with the trust change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.007, p = 0.755.

6.6.7.12 Trust - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8666.936 8777.341 0.97 0.044 0.06
# parameters of interest
params_lcs_trust_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_trust_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t3 ~ trust_t2", "d_trust_1 =~ trust_t3", "d_trust_1 ~ trust_t2", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t2 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t2 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t3 ~ trust_t2 1.000 1.000 1.000 0.961 NA NA
d_trust_1 =~ trust_t3 1.000 1.000 1.000 0.332 NA NA
d_trust_1 ~1 0.066 -0.342 0.473 0.384 0.316 0.752
trust_t2 ~1 2.712 2.583 2.841 5.472 41.328 0.000
d_trust_1 ~~ d_trust_1 0.029 -0.009 0.068 0.995 1.483 0.138
trust_t2 ~ frequ -0.136 -0.280 0.007 -0.173 -1.862 0.063
d_trust_1 ~ trust_t2 -0.021 -0.175 0.132 -0.062 -0.272 0.786
d_trust_1 ~ frequ -0.014 -0.120 0.091 -0.052 -0.266 0.790
frequ ~~ frequ 0.395 0.258 0.531 1.000 5.675 0.000

The moderation effect of the self-improvement behaviors with the trust change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.014, p = 0.79.

6.6.7.13 Organization - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6796.285 6880.929 0.965 0.07 0.04
# parameters of interest
params_lcs_organ_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t3 ~ organ_t2", "d_organ_1 =~ organ_t3", "d_organ_1 ~ organ_t2", # change parameters
                     "d_organ_1 ~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", "d_organ_1 ~ sb07_07_t1", # change goals
                     "d_organ_1 ~1 ", "organ_t2 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t3 ~ organ_t2 1.000 1.000 1.000 1.027 NA NA
d_organ_1 =~ organ_t3 1.000 1.000 1.000 0.466 NA NA
d_organ_1 ~1 0.274 0.058 0.491 0.563 2.485 0.013
organ_t2 ~1 1.388 1.082 1.694 1.293 8.881 0.000
d_organ_1 ~~ d_organ_1 0.218 0.069 0.368 0.919 2.865 0.004
d_organ_1 ~ organ_t2 -0.134 -0.275 0.007 -0.295 -1.868 0.062
d_organ_1 ~ sb07_07_t1 0.006 -0.081 0.094 0.019 0.142 0.887
sb07_07_t1 ~~ sb07_07_t1 2.187 1.980 2.394 1.000 20.736 0.000

The moderation effect of the facet-specific change goal with the organization change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.006, p = 0.887.

6.6.7.14 Organization - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8102.581 8212.986 0.974 0.051 0.043
# parameters of interest
params_lcs_organ_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_organ_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t3 ~ organ_t2", "d_organ_1 =~ organ_t3", "d_organ_1 ~ organ_t2", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t2 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t2 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t3 ~ organ_t2 1.000 1.000 1.000 1.022 NA NA
d_organ_1 =~ organ_t3 1.000 1.000 1.000 0.467 NA NA
d_organ_1 ~1 0.309 0.064 0.554 0.665 2.475 0.013
organ_t2 ~1 2.734 2.583 2.885 2.685 35.435 0.000
d_organ_1 ~~ d_organ_1 0.191 0.057 0.325 0.882 2.801 0.005
organ_t2 ~ frequ -0.245 -0.470 -0.020 -0.150 -2.138 0.032
d_organ_1 ~ organ_t2 -0.140 -0.236 -0.044 -0.306 -2.851 0.004
d_organ_1 ~ frequ -0.155 -0.304 -0.005 -0.208 -2.030 0.042
frequ ~~ frequ 0.390 0.253 0.528 1.000 5.562 0.000

The moderation effect of the frequency of self-improvement behaviors with the organization change score from T2 to T3 (current-self) is not significantly different from zero (at p < .001), b = -0.155, p = 0.042.

6.6.7.15 Productiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6884.26 6968.904 0.953 0.076 0.049
# parameters of interest
params_lcs_produ_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t3 ~ produ_t2", "d_produ_1 =~ produ_t3", "d_produ_1 ~ produ_t2", # change parameters
                     "d_produ_1 ~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", "d_produ_1 ~ sb07_08_t1", # change goals
                     "d_produ_1 ~1 ", "produ_t2 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t3 ~ produ_t2 1.000 1.000 1.000 1.017 NA NA
d_produ_1 =~ produ_t3 1.000 1.000 1.000 0.594 NA NA
d_produ_1 ~1 0.564 0.203 0.925 1.060 3.061 0.002
produ_t2 ~1 1.831 1.450 2.212 2.009 9.423 0.000
d_produ_1 ~~ d_produ_1 0.251 0.102 0.399 0.885 3.314 0.001
d_produ_1 ~ produ_t2 -0.229 -0.416 -0.042 -0.392 -2.406 0.016
d_produ_1 ~ sb07_08_t1 0.050 -0.050 0.150 0.129 0.981 0.327
sb07_08_t1 ~~ sb07_08_t1 1.880 1.615 2.144 1.000 13.934 0.000

The moderation effect of the facet-specific change goal with the productiveness change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.05, p = 0.327.

6.6.7.16 Productiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8224.842 8335.247 0.946 0.071 0.051
# parameters of interest
params_lcs_produ_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_produ_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t3 ~ produ_t2", "d_produ_1 =~ produ_t3", "d_produ_1 ~ produ_t2", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t2 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t2 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t3 ~ produ_t2 1.000 1.000 1.000 1.011 NA NA
d_produ_1 =~ produ_t3 1.000 1.000 1.000 0.594 NA NA
d_produ_1 ~1 0.582 0.159 1.006 1.117 2.693 0.007
produ_t2 ~1 3.211 3.067 3.355 3.617 43.783 0.000
d_produ_1 ~~ d_produ_1 0.245 0.093 0.397 0.900 3.164 0.002
produ_t2 ~ frequ -0.289 -0.513 -0.066 -0.204 -2.539 0.011
d_produ_1 ~ produ_t2 -0.177 -0.314 -0.039 -0.301 -2.519 0.012
d_produ_1 ~ frequ 0.042 -0.121 0.206 0.051 0.510 0.610
frequ ~~ frequ 0.390 0.251 0.530 1.000 5.493 0.000

The frequency of self-improvement behaviors significantly moderates changes in productiveness (current-self) from T2 to T3, b = 0.042, p = 0.61.

6.6.7.17 Responsibility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7230.617 7315.261 0.92 0.08 0.074
# parameters of interest
params_lcs_respo_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t3 ~ respo_t2", "d_respo_1 =~ respo_t3", "d_respo_1 ~ respo_t2", # change parameters
                     "d_respo_1 ~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", "d_respo_1 ~ sb07_09_t1", # change goals
                     "d_respo_1 ~1 ", "respo_t2 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t3 ~ respo_t2 1.000 1.000 1.000 1.017 NA NA
d_respo_1 =~ respo_t3 1.000 1.000 1.000 0.684 NA NA
d_respo_1 ~1 1.039 0.347 1.732 2.945 2.941 0.003
respo_t2 ~1 4.134 3.928 4.340 7.880 39.266 0.000
d_respo_1 ~~ d_respo_1 0.108 0.027 0.188 0.864 2.615 0.009
d_respo_1 ~ respo_t2 -0.265 -0.426 -0.104 -0.394 -3.223 0.001
d_respo_1 ~ sb07_09_t1 -0.019 -0.068 0.030 -0.080 -0.753 0.451
sb07_09_t1 ~~ sb07_09_t1 2.211 2.012 2.409 1.000 21.798 0.000

The moderation effect of the facet-specific change goal with the responsibility change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.019, p = 0.451.

6.6.7.18 Responsibility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8486.343 8596.748 0.932 0.067 0.074
# parameters of interest
params_lcs_respo_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_respo_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t3 ~ respo_t2", "d_respo_1 =~ respo_t3", "d_respo_1 ~ respo_t2", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t2 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t2 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t3 ~ respo_t2 1.000 1.000 1.000 1.011 NA NA
d_respo_1 =~ respo_t3 1.000 1.000 1.000 0.680 NA NA
d_respo_1 ~1 0.880 0.371 1.389 2.386 3.390 0.001
respo_t2 ~1 3.680 3.570 3.791 6.707 65.147 0.000
d_respo_1 ~~ d_respo_1 0.119 0.024 0.214 0.875 2.449 0.014
respo_t2 ~ frequ 0.071 -0.090 0.233 0.081 0.862 0.389
d_respo_1 ~ respo_t2 -0.238 -0.376 -0.100 -0.354 -3.377 0.001
d_respo_1 ~ frequ 0.010 -0.105 0.125 0.017 0.173 0.863
frequ ~~ frequ 0.394 0.255 0.532 1.000 5.562 0.000

The moderation effect of the frequency of self-improvement behaviors with the responsibility change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.01, p = 0.863.

6.6.7.19 Anxiety - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7295.89 7380.534 0.996 0.019 0.037
# parameters of interest
params_lcs_anxie_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t3 ~ anxie_t2", "d_anxie_1 =~ anxie_t3", "d_anxie_1 ~ anxie_t2", # change parameters
                     "d_anxie_1 ~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", "d_anxie_1 ~ sb07_10_t1", # change goals
                     "d_anxie_1 ~1 ", "anxie_t2 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t3 ~ anxie_t2 1.000 1.000 1.000 1.025 NA NA
d_anxie_1 =~ anxie_t3 1.000 1.000 1.000 0.477 NA NA
d_anxie_1 ~1 1.186 0.648 1.723 3.059 4.327 0.000
anxie_t2 ~1 3.986 3.714 4.259 4.791 28.633 0.000
d_anxie_1 ~~ d_anxie_1 0.117 0.039 0.195 0.778 2.932 0.003
d_anxie_1 ~ anxie_t2 -0.234 -0.360 -0.108 -0.503 -3.639 0.000
d_anxie_1 ~ sb07_10_t1 -0.111 -0.173 -0.048 -0.435 -3.466 0.001
sb07_10_t1 ~~ sb07_10_t1 2.322 2.077 2.568 1.000 18.545 0.000

The facet-specific change goal significantly moderates changes in anxiety from T2 to T3 (current-self), b = -0.111, p = 0.001. Main effect was an increase in anxiety from T2 to T3 and this increase was less pronounced for those with a higher anxiety change goal.

6.6.7.20 Anxiety - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8582.599 8693.004 0.976 0.041 0.048
# parameters of interest
params_lcs_anxie_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_anxie_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t3 ~ anxie_t2", "d_anxie_1 =~ anxie_t3", "d_anxie_1 ~ anxie_t2", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t2 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t2 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t3 ~ anxie_t2 1.000 1.000 1.000 1.033 NA NA
d_anxie_1 =~ anxie_t3 1.000 1.000 1.000 0.484 NA NA
d_anxie_1 ~1 0.506 0.197 0.816 1.290 3.209 0.001
anxie_t2 ~1 3.001 2.862 3.139 3.582 42.380 0.000
d_anxie_1 ~~ d_anxie_1 0.139 0.051 0.228 0.904 3.084 0.002
anxie_t2 ~ frequ 0.021 -0.201 0.242 0.016 0.183 0.855
d_anxie_1 ~ anxie_t2 -0.140 -0.244 -0.037 -0.299 -2.652 0.008
d_anxie_1 ~ frequ -0.045 -0.197 0.106 -0.073 -0.586 0.558
frequ ~~ frequ 0.397 0.258 0.537 1.000 5.580 0.000

The moderation effect of the frequency of self-improvement behaviors with the anxiety change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.045, p = 0.558.

6.6.7.21 Depression - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7101.267 7185.911 0.97 0.065 0.054
# parameters of interest
params_lcs_depre_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t3 ~ depre_t2", "d_depre_1 =~ depre_t3", "d_depre_1 ~ depre_t2", # change parameters
                     "d_depre_1 ~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", "d_depre_1 ~ sb07_11_t1", # change goals
                     "d_depre_1 ~1 ", "depre_t2 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t3 ~ depre_t2 1.000 1.000 1.000 0.993 NA NA
d_depre_1 =~ depre_t3 1.000 1.000 1.000 0.565 NA NA
d_depre_1 ~1 0.675 0.125 1.225 2.027 2.405 0.016
depre_t2 ~1 4.064 3.877 4.252 6.942 42.396 0.000
d_depre_1 ~~ d_depre_1 0.102 0.053 0.152 0.923 4.029 0.000
d_depre_1 ~ depre_t2 -0.181 -0.307 -0.054 -0.318 -2.795 0.005
d_depre_1 ~ sb07_11_t1 -0.014 -0.064 0.037 -0.068 -0.540 0.589
sb07_11_t1 ~~ sb07_11_t1 2.619 2.421 2.817 1.000 25.943 0.000

The moderation effect of the facet-specific change goal with the depression change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.014, p = 0.589.

6.6.7.22 Depression - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8411.381 8521.786 0.936 0.08 0.086
# parameters of interest
params_lcs_depre_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_depre_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t3 ~ depre_t2", "d_depre_1 =~ depre_t3", "d_depre_1 ~ depre_t2", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t2 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t2 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t3 ~ depre_t2 1.000 1.000 1.000 0.993 NA NA
d_depre_1 =~ depre_t3 1.000 1.000 1.000 0.561 NA NA
d_depre_1 ~1 0.538 0.285 0.792 1.597 4.160 0.000
depre_t2 ~1 3.279 3.156 3.402 5.488 52.202 0.000
d_depre_1 ~~ d_depre_1 0.105 0.053 0.158 0.927 3.949 0.000
depre_t2 ~ frequ 0.006 -0.144 0.156 0.006 0.077 0.939
d_depre_1 ~ depre_t2 -0.153 -0.228 -0.077 -0.270 -3.964 0.000
d_depre_1 ~ frequ 0.002 -0.093 0.097 0.004 0.041 0.967
frequ ~~ frequ 0.396 0.255 0.537 1.000 5.518 0.000

The moderation effect of the frequency of self-improvement behaviors with the depression change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.002, p = 0.967.

6.6.7.23 Volatility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7222.467 7307.111 0.989 0.034 0.033
# parameters of interest
params_lcs_volat_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t3 ~ volat_t2", "d_volat_1 =~ volat_t3", "d_volat_1 ~ volat_t2", # change parameters
                     "d_volat_1 ~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", "d_volat_1 ~ sb07_12_t1", # change goals
                     "d_volat_1 ~1 ", "volat_t2 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t3 ~ volat_t2 1.000 1.000 1.000 0.998 NA NA
d_volat_1 =~ volat_t3 1.000 1.000 1.000 0.419 NA NA
d_volat_1 ~1 0.297 0.022 0.573 0.779 2.114 0.034
volat_t2 ~1 2.306 2.047 2.565 2.533 17.459 0.000
d_volat_1 ~~ d_volat_1 0.137 0.033 0.241 0.940 2.583 0.010
d_volat_1 ~ volat_t2 -0.064 -0.171 0.043 -0.153 -1.170 0.242
d_volat_1 ~ sb07_12_t1 -0.037 -0.105 0.030 -0.142 -1.079 0.281
sb07_12_t1 ~~ sb07_12_t1 2.109 1.902 2.316 1.000 19.963 0.000

The moderation effect of the facet-specific change goal with the volatility change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.037, p = 0.281.

6.6.7.24 Volatility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8483.733 8594.138 1 0 0.031
# parameters of interest
params_lcs_volat_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_volat_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t3 ~ volat_t2", "d_volat_1 =~ volat_t3", "d_volat_1 ~ volat_t2", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t2 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t2 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t3 ~ volat_t2 1.000 1.000 1.000 0.998 NA NA
d_volat_1 =~ volat_t3 1.000 1.000 1.000 0.418 NA NA
d_volat_1 ~1 0.260 -0.018 0.539 0.690 1.835 0.067
volat_t2 ~1 2.951 2.813 3.089 3.270 41.853 0.000
d_volat_1 ~~ d_volat_1 0.135 0.034 0.236 0.950 2.624 0.009
volat_t2 ~ frequ -0.017 -0.227 0.192 -0.012 -0.164 0.870
d_volat_1 ~ volat_t2 -0.086 -0.178 0.006 -0.206 -1.837 0.066
d_volat_1 ~ frequ -0.054 -0.202 0.094 -0.090 -0.716 0.474
frequ ~~ frequ 0.395 0.258 0.532 1.000 5.643 0.000

The moderation effect of the frequency of self-improvement behaviors with the volatility change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.054, p = 0.474.

6.6.7.25 Curiosity - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6933.358 7018.002 0.994 0.021 0.037
# parameters of interest
params_lcs_curio_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t3 ~ curio_t2", "d_curio_1 =~ curio_t3", "d_curio_1 ~ curio_t2", # change parameters
                     "d_curio_1 ~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", "d_curio_1 ~ sb07_13_t1", # change goals
                     "d_curio_1 ~1 ", "curio_t2 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t3 ~ curio_t2 1.000 1.000 1.000 1.105 NA NA
d_curio_1 =~ curio_t3 1.000 1.000 1.000 0.421 NA NA
d_curio_1 ~1 0.764 0.165 1.362 4.364 2.499 0.012
curio_t2 ~1 4.389 4.220 4.559 9.561 50.860 0.000
d_curio_1 ~~ d_curio_1 0.025 -0.004 0.053 0.801 1.696 0.090
d_curio_1 ~ curio_t2 -0.175 -0.308 -0.043 -0.459 -2.589 0.010
d_curio_1 ~ sb07_13_t1 -0.017 -0.054 0.020 -0.127 -0.904 0.366
sb07_13_t1 ~~ sb07_13_t1 1.719 1.512 1.926 1.000 16.250 0.000

The moderation effect of the facet-specific change goal with the curiosity change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.017, p = 0.366.

6.6.7.26 Curiosity - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8225.646 8336.051 0.976 0.039 0.053
# parameters of interest
params_lcs_curio_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_curio_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t3 ~ curio_t2", "d_curio_1 =~ curio_t3", "d_curio_1 ~ curio_t2", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t2 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t2 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t3 ~ curio_t2 1.000 1.000 1.000 1.103 NA NA
d_curio_1 =~ curio_t3 1.000 1.000 1.000 0.418 NA NA
d_curio_1 ~1 0.648 0.052 1.244 3.812 2.133 0.033
curio_t2 ~1 4.189 4.096 4.281 9.342 88.360 0.000
d_curio_1 ~~ d_curio_1 0.024 -0.003 0.051 0.818 1.725 0.084
curio_t2 ~ frequ 0.180 0.044 0.316 0.252 2.600 0.009
d_curio_1 ~ curio_t2 -0.157 -0.295 -0.019 -0.414 -2.232 0.026
d_curio_1 ~ frequ -0.011 -0.095 0.072 -0.041 -0.264 0.791
frequ ~~ frequ 0.394 0.254 0.534 1.000 5.499 0.000

The moderation effect of the frequency of self-improvement behaviors with the curiosity change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.011, p = 0.791.

6.6.7.27 Aesthetic - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 7151.964 7236.608 0.984 0.041 0.044
# parameters of interest
params_lcs_aesth_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t3 ~ aesth_t2", "d_aesth_1 =~ aesth_t3", "d_aesth_1 ~ aesth_t2", # change parameters
                     "d_aesth_1 ~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", "d_aesth_1 ~ sb07_14_t1", # change goals
                     "d_aesth_1 ~1 ", "aesth_t2 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t3 ~ aesth_t2 1.000 1.000 1.000 1.048 NA NA
d_aesth_1 =~ aesth_t3 1.000 1.000 1.000 0.441 NA NA
d_aesth_1 ~1 0.392 0.130 0.654 4.258 2.929 0.003
aesth_t2 ~1 2.854 2.702 3.007 13.067 36.744 0.000
d_aesth_1 ~~ d_aesth_1 0.007 -0.005 0.020 0.883 1.190 0.234
d_aesth_1 ~ aesth_t2 -0.133 -0.227 -0.039 -0.316 -2.781 0.005
d_aesth_1 ~ sb07_14_t1 -0.009 -0.022 0.005 -0.128 -1.277 0.202
sb07_14_t1 ~~ sb07_14_t1 1.910 1.720 2.100 1.000 19.738 0.000

The moderation effect of the facet-specific change goal with the aesthetic change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.009, p = 0.202.

6.6.7.28 Aesthetic - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 8403.449 8513.854 0.971 0.051 0.05
# parameters of interest
params_lcs_aesth_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_aesth_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t3 ~ aesth_t2", "d_aesth_1 =~ aesth_t3", "d_aesth_1 ~ aesth_t2", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t2 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t2 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t3 ~ aesth_t2 1.000 1.000 1.000 1.047 NA NA
d_aesth_1 =~ aesth_t3 1.000 1.000 1.000 0.440 NA NA
d_aesth_1 ~1 0.367 0.093 0.641 3.984 2.628 0.009
aesth_t2 ~1 2.858 2.723 2.993 13.045 41.461 0.000
d_aesth_1 ~~ d_aesth_1 0.008 -0.005 0.020 0.901 1.198 0.231
aesth_t2 ~ frequ -0.066 -0.147 0.014 -0.191 -1.616 0.106
d_aesth_1 ~ aesth_t2 -0.133 -0.230 -0.035 -0.316 -2.661 0.008
d_aesth_1 ~ frequ -0.001 -0.033 0.031 -0.006 -0.050 0.960
frequ ~~ frequ 0.395 0.256 0.534 1.000 5.579 0.000

The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.001, p = 0.96.

6.6.7.29 Imagination - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 23 6692.048 6776.692 0.95 0.069 0.063
# parameters of interest
params_lcs_imagi_curr_specif_hyp6_fu <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t3 ~ imagi_t2", "d_imagi_1 =~ imagi_t3", "d_imagi_1 ~ imagi_t2", # change parameters
                     "d_imagi_1 ~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", "d_imagi_1 ~ sb07_15_t1", # change goals
                     "d_imagi_1 ~1 ", "imagi_t2 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t3 ~ imagi_t2 1.000 1.000 1.000 1.147 NA NA
d_imagi_1 =~ imagi_t3 1.000 1.000 1.000 0.577 NA NA
d_imagi_1 ~1 0.990 0.417 1.563 2.733 3.388 0.001
imagi_t2 ~1 4.224 4.022 4.425 5.866 41.089 0.000
d_imagi_1 ~~ d_imagi_1 0.100 0.031 0.168 0.760 2.861 0.004
d_imagi_1 ~ imagi_t2 -0.248 -0.381 -0.115 -0.493 -3.661 0.000
d_imagi_1 ~ sb07_15_t1 -0.003 -0.046 0.041 -0.010 -0.117 0.907
sb07_15_t1 ~~ sb07_15_t1 2.008 1.812 2.203 1.000 20.155 0.000

The moderation effect of the facet-specific change goal with the imagination change score from T2 to T3 (current-self) is not significantly different from zero, b = -0.003, p = 0.907.

6.6.7.30 Imagination - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_frequ_hyp6_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
293 30 7938.351 8048.756 0.959 0.057 0.059
# parameters of interest
params_lcs_imagi_curr_frequ_hyp6_fu <- broom::tidy(fit_mi_lcs_imagi_curr_frequ_hyp6_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t3 ~ imagi_t2", "d_imagi_1 =~ imagi_t3", "d_imagi_1 ~ imagi_t2", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t2 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t2 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_frequ_hyp6_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t3 ~ imagi_t2 1.000 1.000 1.000 1.146 NA NA
d_imagi_1 =~ imagi_t3 1.000 1.000 1.000 0.578 NA NA
d_imagi_1 ~1 1.024 0.462 1.586 2.795 3.572 0.000
imagi_t2 ~1 3.737 3.636 3.839 5.146 71.916 0.000
d_imagi_1 ~~ d_imagi_1 0.101 0.033 0.170 0.755 2.922 0.003
imagi_t2 ~ frequ 0.362 0.169 0.555 0.311 3.673 0.000
d_imagi_1 ~ imagi_t2 -0.259 -0.401 -0.117 -0.513 -3.579 0.000
d_imagi_1 ~ frequ 0.046 -0.085 0.177 0.078 0.684 0.494
frequ ~~ frequ 0.390 0.257 0.523 1.000 5.731 0.000

The moderation effect of the frequency of self-improvement behaviors with the imagination change score from T2 to T3 (current-self) is not significantly different from zero, b = 0.046, p = 0.494.

6.6.8 Big Five facets (ideal self)

6.6.8.1 Sociability - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7936.436 8024.366 0.96 0.042 0.046
# parameters of interest
params_lcs_socia_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sb07_01_t1", "sb07_01_t1 ~~ sb07_01_t1", "d_socia_1 ~ sb07_01_t1", # change goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.980 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.624 NA NA
d_socia_1 ~1 0.793 0.024 1.562 2.934 2.020 0.043
socia_t1 ~1 4.029 3.797 4.261 9.498 34.046 0.000
d_socia_1 ~~ d_socia_1 0.064 0.010 0.119 0.883 2.328 0.020
d_socia_1 ~ socia_t1 -0.161 -0.342 0.020 -0.252 -1.741 0.082
d_socia_1 ~ sb07_01_t1 -0.041 -0.086 0.005 -0.189 -1.743 0.081
sb07_01_t1 ~~ sb07_01_t1 1.597 1.400 1.794 1.000 15.898 0.000

The moderation effect of the facet-specific change goal with the sociability change score (ideal-self) is not significantly different from zero, b = -0.041, p = 0.081.

6.6.8.2 Sociability - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9104.029 9218.72 0.953 0.046 0.056
# parameters of interest
params_lcs_socia_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_socia_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.982 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.626 NA NA
d_socia_1 ~1 0.793 0.022 1.565 2.875 2.016 0.044
socia_t1 ~1 4.241 4.158 4.324 9.796 100.182 0.000
d_socia_1 ~~ d_socia_1 0.068 0.011 0.124 0.888 2.355 0.019
socia_t1 ~ frequ 0.062 -0.064 0.189 0.091 0.964 0.335
d_socia_1 ~ socia_t1 -0.195 -0.374 -0.016 -0.305 -2.130 0.033
d_socia_1 ~ frequ 0.073 -0.039 0.186 0.168 1.276 0.202
frequ ~~ frequ 0.399 0.261 0.538 1.000 5.660 0.000

The moderation effect of the frequency of self-improvement behaviors with sociability change score (ideal-self) is not significantly different from zero, b = 0.073, p = 0.202.

6.6.8.3 Assertiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8045.558 8133.488 0.946 0.048 0.047
# parameters of interest
params_lcs_asser_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sb07_02_t1", "sb07_02_t1 ~~ sb07_02_t1", "d_asser_1 ~ sb07_02_t1", # change goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.974 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.629 NA NA
d_asser_1 ~1 0.735 -0.141 1.611 3.693 1.644 0.100
asser_t1 ~1 4.114 3.962 4.266 13.358 53.180 0.000
d_asser_1 ~~ d_asser_1 0.036 -0.006 0.079 0.921 1.678 0.093
d_asser_1 ~ asser_t1 -0.182 -0.393 0.030 -0.281 -1.684 0.092
d_asser_1 ~ sb07_02_t1 0.004 -0.026 0.034 0.027 0.270 0.787
sb07_02_t1 ~~ sb07_02_t1 1.688 1.496 1.881 1.000 17.182 0.000

The moderation effect of the facet-specific change goal with the assertiveness change score (ideal-self) is not significantly different from zero, b = 0.004, p = 0.787.

6.6.8.4 Assertiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9162.303 9276.995 0.972 0.035 0.043
# parameters of interest
params_lcs_asser_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_asser_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.978 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.653 NA NA
d_asser_1 ~1 1.023 0.050 1.995 4.992 2.060 0.039
asser_t1 ~1 4.145 4.064 4.226 13.499 100.349 0.000
d_asser_1 ~~ d_asser_1 0.037 -0.003 0.077 0.878 1.805 0.071
asser_t1 ~ frequ 0.179 0.077 0.281 0.372 3.447 0.001
d_asser_1 ~ asser_t1 -0.248 -0.480 -0.015 -0.371 -2.086 0.037
d_asser_1 ~ frequ 0.062 -0.020 0.143 0.192 1.483 0.138
frequ ~~ frequ 0.405 0.269 0.541 1.000 5.845 0.000

The moderation effect of the frequency of self-improvement behaviors with the assertiveness change score (ideal-self) is not significantly different from zero, b = 0.062, p = 0.138.

6.6.8.5 Energy - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7893.195 7981.125 0.949 0.039 0.046
# parameters of interest
params_lcs_energ_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sb07_03_t1", "sb07_03_t1 ~~ sb07_03_t1", "d_energ_1 ~ sb07_03_t1", # change goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 0.802 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.569 NA NA
d_energ_1 ~1 -0.078 -0.823 0.667 -0.649 -0.205 0.838
energ_t1 ~1 2.314 2.176 2.452 13.687 32.861 0.000
d_energ_1 ~~ d_energ_1 0.014 -0.007 0.036 0.988 1.303 0.193
d_energ_1 ~ energ_t1 0.036 -0.286 0.358 0.050 0.218 0.828
d_energ_1 ~ sb07_03_t1 0.010 -0.014 0.034 0.103 0.816 0.414
sb07_03_t1 ~~ sb07_03_t1 1.572 1.373 1.770 1.000 15.549 0.000

The moderation effect of the facet-specific change goal with the energy change score (ideal-self) is not significantly different from zero, b = 0.01, p = 0.414.

6.6.8.6 Energy - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9047.43 9162.121 0.967 0.034 0.046
# parameters of interest
params_lcs_energ_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_energ_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 0.813 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.551 NA NA
d_energ_1 ~1 0.025 -0.742 0.792 0.207 0.063 0.949
energ_t1 ~1 2.242 2.124 2.360 12.665 37.296 0.000
d_energ_1 ~~ d_energ_1 0.014 -0.006 0.035 0.991 1.372 0.170
energ_t1 ~ frequ -0.091 -0.171 -0.011 -0.328 -2.229 0.026
d_energ_1 ~ energ_t1 0.007 -0.343 0.356 0.010 0.037 0.971
d_energ_1 ~ frequ -0.017 -0.088 0.053 -0.092 -0.480 0.631
frequ ~~ frequ 0.407 0.268 0.545 1.000 5.756 0.000

The moderation effect of the frequency of self-improvement behaviors with the energy change score (ideal-self) is not significantly different from zero, b = -0.017, p = 0.631.

6.6.8.7 Compassion - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8389.855 8477.785 0.938 0.048 0.057
# parameters of interest
params_lcs_compa_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sb07_04_t1", "sb07_04_t1 ~~ sb07_04_t1", "d_compa_1 ~ sb07_04_t1", # change goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.980 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.429 NA NA
d_compa_1 ~1 0.083 -1.009 1.176 0.379 0.150 0.881
compa_t1 ~1 4.443 4.285 4.600 8.815 55.369 0.000
d_compa_1 ~~ d_compa_1 0.045 -0.030 0.119 0.919 1.180 0.238
d_compa_1 ~ compa_t1 -0.053 -0.294 0.189 -0.121 -0.429 0.668
d_compa_1 ~ sb07_04_t1 0.038 -0.015 0.090 0.232 1.407 0.159
sb07_04_t1 ~~ sb07_04_t1 1.843 1.662 2.024 1.000 19.988 0.000

The moderation effect of the facet-specific change goal with the compassion change score (ideal-self) is not significantly different from zero, b = 0.038, p = 0.159.

6.6.8.8 Compassion - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9504.94 9619.631 0.941 0.048 0.066
# parameters of interest
params_lcs_compa_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_compa_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.979 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.433 NA NA
d_compa_1 ~1 0.315 -0.743 1.374 1.387 0.584 0.559
compa_t1 ~1 4.226 4.132 4.320 8.210 88.386 0.000
d_compa_1 ~~ d_compa_1 0.050 -0.026 0.125 0.964 1.296 0.195
compa_t1 ~ frequ 0.194 0.068 0.319 0.240 3.021 0.003
d_compa_1 ~ compa_t1 -0.085 -0.329 0.160 -0.191 -0.679 0.497
d_compa_1 ~ frequ 0.029 -0.106 0.164 0.081 0.418 0.676
frequ ~~ frequ 0.406 0.266 0.546 1.000 5.672 0.000

The moderation effect of the frequency of self-improvement behaviors with the compassion change score (ideal-self) is not significantly different from zero, b = 0.029, p = 0.676.

6.6.8.9 Respectfulness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 6803.064 6890.994 0.966 0.041 0.046
# parameters of interest
params_lcs_respe_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sb07_05_t1", "sb07_05_t1 ~~ sb07_05_t1", "d_respe_1 ~ sb07_05_t1", # change goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.108 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.678 NA NA
d_respe_1 ~1 1.410 0.638 2.183 5.850 3.579 0.000
respe_t1 ~1 4.797 4.699 4.895 12.175 95.990 0.000
d_respe_1 ~~ d_respe_1 0.045 0.015 0.075 0.777 2.961 0.003
d_respe_1 ~ respe_t1 -0.289 -0.448 -0.131 -0.473 -3.570 0.000
d_respe_1 ~ sb07_05_t1 -0.021 -0.055 0.014 -0.115 -1.178 0.239
sb07_05_t1 ~~ sb07_05_t1 1.826 1.607 2.046 1.000 16.296 0.000

The moderation effect of the facet-specific change goal with the respectfulness change score (ideal-self) is not significantly different from zero, b = -0.021, p = 0.239.

6.6.8.10 Respectfulness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 7910.311 8025.003 0.969 0.039 0.05
# parameters of interest
params_lcs_respe_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respe_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 1.108 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.678 NA NA
d_respe_1 ~1 1.334 0.493 2.174 5.528 3.110 0.002
respe_t1 ~1 4.710 4.650 4.770 11.948 153.622 0.000
d_respe_1 ~~ d_respe_1 0.046 0.015 0.077 0.791 2.925 0.003
respe_t1 ~ frequ 0.196 0.108 0.285 0.321 4.351 0.000
d_respe_1 ~ respe_t1 -0.283 -0.457 -0.110 -0.463 -3.196 0.001
d_respe_1 ~ frequ 0.007 -0.066 0.079 0.018 0.180 0.857
frequ ~~ frequ 0.415 0.274 0.556 1.000 5.782 0.000

The moderation effect of the frequency of self-improvement behaviors with the respectfulness change score (ideal-self) is not significantly different from zero, b = 0.007, p = 0.857.

6.6.8.11 Trust - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8210.959 8298.889 0.957 0.045 0.047
# parameters of interest
params_lcs_trust_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sb07_06_t1", "sb07_06_t1 ~~ sb07_06_t1", "d_trust_1 ~ sb07_06_t1", # change goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 0.896 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.335 NA NA
d_trust_1 ~1 0.007 -0.389 0.402 0.053 0.034 0.973
trust_t1 ~1 1.915 1.774 2.055 5.499 26.727 0.000
d_trust_1 ~~ d_trust_1 0.016 -0.020 0.052 0.953 0.883 0.377
d_trust_1 ~ trust_t1 0.052 -0.143 0.246 0.138 0.522 0.602
d_trust_1 ~ sb07_06_t1 -0.016 -0.052 0.020 -0.164 -0.863 0.388
sb07_06_t1 ~~ sb07_06_t1 1.829 1.657 2.000 1.000 20.861 0.000

The moderation effect of the facet-specific change goal with the trust change score (ideal-self) is not significantly different from zero, b = -0.016, p = 0.388.

6.6.8.12 Trust - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9319.462 9434.154 0.974 0.035 0.046
# parameters of interest
params_lcs_trust_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_trust_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 0.898 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.333 NA NA
d_trust_1 ~1 -0.076 -0.472 0.320 -0.593 -0.377 0.706
trust_t1 ~1 1.900 1.808 1.993 5.490 40.160 0.000
d_trust_1 ~~ d_trust_1 0.015 -0.020 0.051 0.938 0.848 0.397
trust_t1 ~ frequ -0.151 -0.249 -0.053 -0.275 -3.015 0.003
d_trust_1 ~ trust_t1 0.073 -0.138 0.283 0.196 0.676 0.499
d_trust_1 ~ frequ 0.044 -0.054 0.142 0.217 0.886 0.376
frequ ~~ frequ 0.397 0.260 0.533 1.000 5.701 0.000

The moderation effect of the self-improvement behaviors with the trust change score (ideal-self) is not significantly different from zero, b = 0.044, p = 0.376.

6.6.8.13 Organization - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7316.953 7404.883 0.762 0.086 0.092
# parameters of interest
params_lcs_organ_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sb07_07_t1", "sb07_07_t1 ~~ sb07_07_t1", "d_organ_1 ~ sb07_07_t1", # change goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.978 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.720 NA NA
d_organ_1 ~1 0.312 0.001 0.623 1.109 1.969 0.049
organ_t1 ~1 1.711 1.535 1.886 4.477 19.129 0.000
d_organ_1 ~~ d_organ_1 0.069 0.015 0.123 0.870 2.517 0.012
d_organ_1 ~ organ_t1 -0.244 -0.441 -0.048 -0.332 -2.439 0.015
d_organ_1 ~ sb07_07_t1 0.025 -0.015 0.065 0.130 1.214 0.225
sb07_07_t1 ~~ sb07_07_t1 2.198 2.006 2.391 1.000 22.374 0.000

The moderation effect of the facet-specific change goal with the organization change score (ideal-self) is not significantly different from zero, b = 0.025, p = 0.225.

6.6.8.14 Organization - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 8354.305 8468.996 0.871 0.068 0.081
# parameters of interest
params_lcs_organ_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_organ_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.985 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.712 NA NA
d_organ_1 ~1 0.476 0.168 0.785 1.729 3.028 0.002
organ_t1 ~1 1.679 1.576 1.782 4.404 31.924 0.000
d_organ_1 ~~ d_organ_1 0.062 0.015 0.110 0.819 2.567 0.010
organ_t1 ~ frequ -0.156 -0.257 -0.054 -0.264 -2.993 0.003
d_organ_1 ~ organ_t1 -0.296 -0.493 -0.100 -0.410 -2.952 0.003
d_organ_1 ~ frequ -0.113 -0.218 -0.009 -0.266 -2.126 0.034
frequ ~~ frequ 0.418 0.278 0.559 1.000 5.841 0.000

The moderation effect of the frequency of self-improvement behaviors with the organization change score (ideal-self) is not significantly different from zero (at p < .001), b = -0.113, p = 0.034.

6.6.8.15 Productiveness - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 6176.632 6264.562 0.916 0.071 0.06
# parameters of interest
params_lcs_produ_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sb07_08_t1", "sb07_08_t1 ~~ sb07_08_t1", "d_produ_1 ~ sb07_08_t1", # change goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.883 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.578 NA NA
d_produ_1 ~1 0.013 -0.349 0.375 0.051 0.069 0.945
produ_t1 ~1 1.680 1.531 1.830 4.390 21.987 0.000
d_produ_1 ~~ d_produ_1 0.060 0.008 0.112 0.965 2.279 0.023
d_produ_1 ~ produ_t1 -0.065 -0.269 0.139 -0.100 -0.627 0.531
d_produ_1 ~ sb07_08_t1 0.027 -0.004 0.059 0.151 1.699 0.089
sb07_08_t1 ~~ sb07_08_t1 1.899 1.651 2.148 1.000 14.992 0.000

The moderation effect of the facet-specific change goal with the productiveness change score (ideal-self) is not significantly different from zero, b = 0.027, p = 0.089.

6.6.8.16 Productiveness - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 7274.847 7389.538 0.932 0.062 0.06
# parameters of interest
params_lcs_produ_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_produ_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.885 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.580 NA NA
d_produ_1 ~1 0.157 -0.153 0.468 0.630 0.995 0.320
produ_t1 ~1 1.596 1.517 1.675 4.188 39.495 0.000
d_produ_1 ~~ d_produ_1 0.061 0.009 0.113 0.974 2.291 0.022
produ_t1 ~ frequ -0.121 -0.206 -0.035 -0.201 -2.754 0.006
d_produ_1 ~ produ_t1 -0.091 -0.299 0.116 -0.139 -0.863 0.388
d_produ_1 ~ frequ -0.045 -0.122 0.032 -0.115 -1.141 0.254
frequ ~~ frequ 0.405 0.265 0.545 1.000 5.678 0.000

The frequency of self-improvement behaviors significantly moderates changes in productiveness (ideal-self), b = -0.045, p = 0.254.

6.6.8.17 Responsibility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7839.417 7927.347 0.935 0.055 0.051
# parameters of interest
params_lcs_respo_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sb07_09_t1", "sb07_09_t1 ~~ sb07_09_t1", "d_respo_1 ~ sb07_09_t1", # change goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.019 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.664 NA NA
d_respo_1 ~1 0.974 0.215 1.732 5.091 2.515 0.012
respo_t1 ~1 4.211 4.072 4.350 14.351 59.248 0.000
d_respo_1 ~~ d_respo_1 0.032 0.002 0.062 0.874 2.093 0.036
d_respo_1 ~ respo_t1 -0.232 -0.408 -0.055 -0.356 -2.572 0.010
d_respo_1 ~ sb07_09_t1 -0.003 -0.029 0.023 -0.024 -0.231 0.818
sb07_09_t1 ~~ sb07_09_t1 2.198 2.013 2.382 1.000 23.300 0.000

The moderation effect of the facet-specific change goal with the responsibility change score (ideal-self) is not significantly different from zero, b = -0.003, p = 0.818.

6.6.8.18 Responsibility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 8879.191 8993.882 0.94 0.053 0.056
# parameters of interest
params_lcs_respo_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_respo_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.022 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.667 NA NA
d_respo_1 ~1 1.054 0.275 1.832 5.507 2.652 0.008
respo_t1 ~1 4.188 4.079 4.297 14.292 75.481 0.000
d_respo_1 ~~ d_respo_1 0.032 0.002 0.062 0.863 2.071 0.038
respo_t1 ~ frequ 0.137 0.039 0.235 0.301 2.731 0.006
d_respo_1 ~ respo_t1 -0.253 -0.436 -0.070 -0.387 -2.714 0.007
d_respo_1 ~ frequ 0.028 -0.034 0.091 0.096 0.889 0.374
frequ ~~ frequ 0.414 0.271 0.558 1.000 5.669 0.000

The moderation effect of the frequency of self-improvement behaviors with the responsibility change score (ideal-self) is not significantly different from zero, b = 0.028, p = 0.374.

6.6.8.19 Anxiety - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7993.568 8081.498 0.949 0.031 0.047
# parameters of interest
params_lcs_anxie_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sb07_10_t1", "sb07_10_t1 ~~ sb07_10_t1", "d_anxie_1 ~ sb07_10_t1", # change goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.892 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.874 NA NA
d_anxie_1 ~1 1.595 0.125 3.066 6.203 2.127 0.033
anxie_t1 ~1 4.506 4.370 4.641 17.174 65.163 0.000
d_anxie_1 ~~ d_anxie_1 0.058 0.007 0.108 0.871 2.228 0.026
d_anxie_1 ~ anxie_t1 -0.354 -0.668 -0.040 -0.361 -2.207 0.027
d_anxie_1 ~ sb07_10_t1 0.003 -0.025 0.031 0.017 0.202 0.840
sb07_10_t1 ~~ sb07_10_t1 2.275 2.040 2.510 1.000 18.986 0.000

The moderation effect of the facet-specific change goal with the anxiety change score (ideal-self) is not significantly different from zero, b = 0.003, p = 0.84.

6.6.8.20 Anxiety - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9033.768 9148.459 0.938 0.042 0.056
# parameters of interest
params_lcs_anxie_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_anxie_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.885 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.879 NA NA
d_anxie_1 ~1 1.652 0.066 3.238 6.085 2.041 0.041
anxie_t1 ~1 4.597 4.535 4.659 16.819 145.508 0.000
d_anxie_1 ~~ d_anxie_1 0.064 0.009 0.120 0.871 2.260 0.024
anxie_t1 ~ frequ 0.110 0.007 0.212 0.258 2.102 0.036
d_anxie_1 ~ anxie_t1 -0.364 -0.707 -0.022 -0.367 -2.088 0.037
d_anxie_1 ~ frequ 0.015 -0.079 0.109 0.035 0.311 0.756
frequ ~~ frequ 0.413 0.266 0.560 1.000 5.513 0.000

The moderation effect of the frequency of self-improvement behaviors with the anxiety change score (ideal-self) is not significantly different from zero, b = 0.015, p = 0.756.

6.6.8.21 Depression - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 6793.041 6880.971 0.899 0.069 0.066
# parameters of interest
params_lcs_depre_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sb07_11_t1", "sb07_11_t1 ~~ sb07_11_t1", "d_depre_1 ~ sb07_11_t1", # change goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.036 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.885 NA NA
d_depre_1 ~1 1.783 0.837 2.729 7.163 3.693 0.000
depre_t1 ~1 4.440 4.326 4.554 15.239 76.575 0.000
d_depre_1 ~~ d_depre_1 0.048 0.013 0.084 0.779 2.673 0.008
d_depre_1 ~ depre_t1 -0.398 -0.606 -0.189 -0.466 -3.734 0.000
d_depre_1 ~ sb07_11_t1 -0.009 -0.030 0.012 -0.058 -0.841 0.400
sb07_11_t1 ~~ sb07_11_t1 2.609 2.418 2.799 1.000 26.880 0.000

The moderation effect of the facet-specific change goal with the depression change score (ideal-self) is not significantly different from zero, b = -0.009, p = 0.4.

6.6.8.22 Depression - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 7788.956 7903.648 0.905 0.067 0.075
# parameters of interest
params_lcs_depre_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_depre_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.036 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.885 NA NA
d_depre_1 ~1 1.770 0.823 2.716 7.038 3.666 0.000
depre_t1 ~1 4.455 4.384 4.525 15.138 124.689 0.000
d_depre_1 ~~ d_depre_1 0.049 0.013 0.086 0.781 2.656 0.008
depre_t1 ~ frequ 0.059 -0.027 0.145 0.128 1.353 0.176
d_depre_1 ~ depre_t1 -0.401 -0.610 -0.193 -0.470 -3.769 0.000
d_depre_1 ~ frequ 0.008 -0.051 0.066 0.020 0.262 0.793
frequ ~~ frequ 0.403 0.262 0.545 1.000 5.596 0.000

The moderation effect of the frequency of self-improvement behaviors with the depression change score (ideal-self) is not significantly different from zero, b = 0.008, p = 0.793.

6.6.8.23 Volatility - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7504.069 7591.999 0.97 0.035 0.042
# parameters of interest
params_lcs_volat_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sb07_12_t1", "sb07_12_t1 ~~ sb07_12_t1", "d_volat_1 ~ sb07_12_t1", # change goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 0.842 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.636 NA NA
d_volat_1 ~1 0.094 -0.253 0.441 0.297 0.530 0.596
volat_t1 ~1 1.647 1.508 1.786 3.934 23.236 0.000
d_volat_1 ~~ d_volat_1 0.097 0.021 0.174 0.975 2.492 0.013
d_volat_1 ~ volat_t1 -0.074 -0.297 0.148 -0.098 -0.655 0.513
d_volat_1 ~ sb07_12_t1 0.026 -0.015 0.066 0.118 1.243 0.214
sb07_12_t1 ~~ sb07_12_t1 2.104 1.911 2.296 1.000 21.424 0.000

The moderation effect of the facet-specific change goal with the volatility change score (ideal-self) is not significantly different from zero, b = 0.026, p = 0.214.

6.6.8.24 Volatility - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 8568.034 8682.725 0.961 0.041 0.053
# parameters of interest
params_lcs_volat_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_volat_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 0.841 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.635 NA NA
d_volat_1 ~1 0.196 -0.156 0.548 0.621 1.090 0.276
volat_t1 ~1 1.599 1.523 1.674 3.825 41.336 0.000
d_volat_1 ~~ d_volat_1 0.097 0.021 0.173 0.979 2.506 0.012
volat_t1 ~ frequ -0.131 -0.231 -0.032 -0.202 -2.591 0.010
d_volat_1 ~ volat_t1 -0.094 -0.326 0.138 -0.125 -0.795 0.427
d_volat_1 ~ frequ -0.051 -0.162 0.060 -0.104 -0.905 0.366
frequ ~~ frequ 0.412 0.267 0.557 1.000 5.568 0.000

The moderation effect of the frequency of self-improvement behaviors with the volatility change score (ideal-self) is significantly different from zero, b = -0.051, p = 0.366.

6.6.8.25 Curiosity - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8112.716 8200.646 0.954 0.041 0.052
# parameters of interest
params_lcs_curio_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sb07_13_t1", "sb07_13_t1 ~~ sb07_13_t1", "d_curio_1 ~ sb07_13_t1", # change goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.980 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.469 NA NA
d_curio_1 ~1 0.420 -0.540 1.380 2.971 0.857 0.391
curio_t1 ~1 4.592 4.489 4.695 15.562 87.584 0.000
d_curio_1 ~~ d_curio_1 0.019 -0.006 0.044 0.957 1.504 0.133
d_curio_1 ~ curio_t1 -0.091 -0.297 0.115 -0.190 -0.865 0.387
d_curio_1 ~ sb07_13_t1 0.007 -0.023 0.037 0.064 0.447 0.655
sb07_13_t1 ~~ sb07_13_t1 1.720 1.527 1.912 1.000 17.527 0.000

The moderation effect of the facet-specific change goal with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.007, p = 0.655.

6.6.8.26 Curiosity - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9247.911 9362.602 0.95 0.045 0.059
# parameters of interest
params_lcs_curio_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_curio_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 0.977 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.459 NA NA
d_curio_1 ~1 0.468 -0.464 1.400 3.246 0.983 0.325
curio_t1 ~1 4.536 4.465 4.607 14.808 125.815 0.000
d_curio_1 ~~ d_curio_1 0.018 -0.008 0.045 0.891 1.356 0.175
curio_t1 ~ frequ 0.042 -0.064 0.148 0.086 0.772 0.440
d_curio_1 ~ curio_t1 -0.098 -0.300 0.104 -0.208 -0.948 0.343
d_curio_1 ~ frequ 0.063 -0.014 0.140 0.276 1.604 0.109
frequ ~~ frequ 0.397 0.258 0.535 1.000 5.607 0.000

The moderation effect of the frequency of self-improvement behaviors with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.063, p = 0.109.

6.6.8.27 Aesthetic - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 8276.038 8363.968 0.989 0.027 0.045
# parameters of interest
params_lcs_aesth_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sb07_14_t1", "sb07_14_t1 ~~ sb07_14_t1", "d_aesth_1 ~ sb07_14_t1", # change goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.985 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.540 NA NA
d_aesth_1 ~1 0.415 -0.128 0.958 30.818 1.499 0.134
aesth_t1 ~1 3.055 2.919 3.192 124.403 43.825 0.000
d_aesth_1 ~~ d_aesth_1 0.000 0.000 0.000 0.939 2.341 0.019
d_aesth_1 ~ aesth_t1 -0.135 -0.313 0.042 -0.247 -1.497 0.134
d_aesth_1 ~ sb07_14_t1 0.000 -0.002 0.002 0.000 0.003 0.998
sb07_14_t1 ~~ sb07_14_t1 1.960 1.782 2.138 1.000 21.634 0.000

The moderation effect of the facet-specific change goal with the aesthetic change score (ideal-self) is not significantly different from zero, b = 0, p = 0.998.

6.6.8.28 Aesthetic - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 9371.926 9486.617 0.981 0.033 0.051
# parameters of interest
params_lcs_aesth_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_aesth_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.986 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.540 NA NA
d_aesth_1 ~1 0.417 -0.109 0.944 37.075 1.554 0.120
aesth_t1 ~1 3.064 2.927 3.201 149.123 43.851 0.000
d_aesth_1 ~~ d_aesth_1 0.000 0.000 0.000 0.939 2.329 0.020
aesth_t1 ~ frequ 0.007 0.002 0.012 0.207 2.739 0.006
d_aesth_1 ~ aesth_t1 -0.136 -0.307 0.035 -0.249 -1.561 0.119
d_aesth_1 ~ frequ 0.000 -0.004 0.004 0.007 0.069 0.945
frequ ~~ frequ 0.398 0.257 0.539 1.000 5.528 0.000

The moderation effect of the frequency of self-improvement behaviors with the aesthetic change score (ideal-self) is not significantly different from zero, b = 0, p = 0.945.

6.6.8.29 Imagination - specific, facet-level change goal as moderator of change

Results summary (sb07_xx_t1 = trait/facet specific change goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 23 7480.097 7568.027 0.889 0.067 0.066
# parameters of interest
params_lcs_imagi_ideal_specif_hyp6 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sb07_15_t1", "sb07_15_t1 ~~ sb07_15_t1", "d_imagi_1 ~ sb07_15_t1", # change goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.068 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.740 NA NA
d_imagi_1 ~1 1.433 0.367 2.499 5.454 2.635 0.008
imagi_t1 ~1 4.613 4.482 4.744 12.166 68.960 0.000
d_imagi_1 ~~ d_imagi_1 0.056 0.020 0.092 0.809 3.059 0.002
d_imagi_1 ~ imagi_t1 -0.302 -0.526 -0.078 -0.435 -2.639 0.008
d_imagi_1 ~ sb07_15_t1 -0.007 -0.038 0.025 -0.037 -0.427 0.669
sb07_15_t1 ~~ sb07_15_t1 2.018 1.837 2.198 1.000 21.903 0.000

The moderation effect of the facet-specific change goal with the imagination change score (ideal-self) is not significantly different from zero, b = -0.007, p = 0.669.

6.6.8.30 Imagination - frequency of self-improvement behaviors as moderator of change

Results summary (frequ = frequency of self-improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_frequ_hyp6) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
338 30 8555.027 8669.719 0.92 0.058 0.074
# parameters of interest
params_lcs_imagi_ideal_frequ_hyp6 <- broom::tidy(fit_mi_lcs_imagi_ideal_frequ_hyp6, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_frequ_hyp6, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.064 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.746 NA NA
d_imagi_1 ~1 1.505 0.354 2.656 5.801 2.563 0.010
imagi_t1 ~1 4.612 4.550 4.673 12.468 146.635 0.000
d_imagi_1 ~~ d_imagi_1 0.054 0.020 0.088 0.799 3.119 0.002
imagi_t1 ~ frequ 0.126 0.031 0.221 0.216 2.609 0.009
d_imagi_1 ~ imagi_t1 -0.322 -0.568 -0.076 -0.459 -2.562 0.010
d_imagi_1 ~ frequ 0.047 -0.060 0.155 0.116 0.863 0.388
frequ ~~ frequ 0.401 0.261 0.541 1.000 5.622 0.000

The moderation effect of the frequency of self-improvement behaviors with the imagination change score (ideal-self) is not significantly different from zero, b = 0.047, p = 0.388.

6.6.9 Hyp 6: Effects summary

6.6.9.1 Summary: Current self

Collect all relevant effects

Show the code
# create df for table:

# main effects (change score)
df_table_hyp6_main <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp6 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_extra_curr_frequ_hyp6 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_agree_curr_specif_hyp6 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_agree_curr_frequ_hyp6 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_consc_curr_specif_hyp6 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_consc_curr_frequ_hyp6 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_neuro_curr_specif_hyp6 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_neuro_curr_frequ_hyp6 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_openn_curr_specif_hyp6 %>% filter(term=="d_openn_1 ~1 "),
  params_lcs_openn_curr_frequ_hyp6 %>% filter(term=="d_openn_1 ~1 "),
  #facets
  params_lcs_socia_curr_specif_hyp6 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_socia_curr_frequ_hyp6 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_asser_curr_specif_hyp6 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_asser_curr_frequ_hyp6 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_energ_curr_specif_hyp6 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_energ_curr_frequ_hyp6 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_compa_curr_specif_hyp6 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_compa_curr_frequ_hyp6 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_respe_curr_specif_hyp6 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_respe_curr_frequ_hyp6 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_trust_curr_specif_hyp6 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_trust_curr_frequ_hyp6 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_organ_curr_specif_hyp6 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_organ_curr_frequ_hyp6 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_produ_curr_specif_hyp6 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_produ_curr_frequ_hyp6 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_respo_curr_specif_hyp6 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_respo_curr_frequ_hyp6 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_anxie_curr_specif_hyp6 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_anxie_curr_frequ_hyp6 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_depre_curr_specif_hyp6 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_depre_curr_frequ_hyp6 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_volat_curr_specif_hyp6 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_volat_curr_frequ_hyp6 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_curio_curr_specif_hyp6 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_curio_curr_frequ_hyp6 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_aesth_curr_specif_hyp6 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_aesth_curr_frequ_hyp6 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_imagi_curr_specif_hyp6 %>% filter(term=="d_imagi_1 ~1 "),
  params_lcs_imagi_curr_frequ_hyp6 %>% filter(term=="d_imagi_1 ~1 ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_main = estimate, std_main = std.all, p_main = p.value)

# moderation effects
df_table_hyp6_mod <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp6 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_curr_frequ_hyp6 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_curr_specif_hyp6 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_curr_frequ_hyp6 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_curr_specif_hyp6 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_curr_frequ_hyp6 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_curr_specif_hyp6 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_curr_frequ_hyp6 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_curr_specif_hyp6 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_curr_frequ_hyp6 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_curr_specif_hyp6 %>% filter(term=="d_socia_1 ~ sb07_01_t1"),
  params_lcs_socia_curr_frequ_hyp6 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_curr_specif_hyp6 %>% filter(term=="d_asser_1 ~ sb07_02_t1"),
  params_lcs_asser_curr_frequ_hyp6 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_curr_specif_hyp6 %>% filter(term=="d_energ_1 ~ sb07_03_t1"),
  params_lcs_energ_curr_frequ_hyp6 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_curr_specif_hyp6 %>% filter(term=="d_compa_1 ~ sb07_04_t1"),
  params_lcs_compa_curr_frequ_hyp6 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_curr_specif_hyp6 %>% filter(term=="d_respe_1 ~ sb07_05_t1"),
  params_lcs_respe_curr_frequ_hyp6 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_curr_specif_hyp6 %>% filter(term=="d_trust_1 ~ sb07_06_t1"),
  params_lcs_trust_curr_frequ_hyp6 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_curr_specif_hyp6 %>% filter(term=="d_organ_1 ~ sb07_07_t1"),
  params_lcs_organ_curr_frequ_hyp6 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_curr_specif_hyp6 %>% filter(term=="d_produ_1 ~ sb07_08_t1"),
  params_lcs_produ_curr_frequ_hyp6 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_curr_specif_hyp6 %>% filter(term=="d_respo_1 ~ sb07_09_t1"),
  params_lcs_respo_curr_frequ_hyp6 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_curr_specif_hyp6 %>% filter(term=="d_anxie_1 ~ sb07_10_t1"),
  params_lcs_anxie_curr_frequ_hyp6 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_curr_specif_hyp6 %>% filter(term=="d_depre_1 ~ sb07_11_t1"),
  params_lcs_depre_curr_frequ_hyp6 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_curr_specif_hyp6 %>% filter(term=="d_volat_1 ~ sb07_12_t1"),
  params_lcs_volat_curr_frequ_hyp6 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_curr_specif_hyp6 %>% filter(term=="d_curio_1 ~ sb07_13_t1"),
  params_lcs_curio_curr_frequ_hyp6 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_curr_specif_hyp6 %>% filter(term=="d_aesth_1 ~ sb07_14_t1"),
  params_lcs_aesth_curr_frequ_hyp6 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_curr_specif_hyp6 %>% filter(term=="d_imagi_1 ~ sb07_15_t1"),
  params_lcs_imagi_curr_frequ_hyp6 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_mod = estimate, std_mod = std.all, p_mod = p.value)

# combine
df_table_hyp6 <- df_table_hyp6_main %>% left_join(df_table_hyp6_mod)

Results summary across the Big Five traits: trait-specific change goals (goals) and frequency of self-improvement behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp6[1:10, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
extraversion goals 0.906 3.114 0.003 -0.090 -0.231 0.320
extraversion frequency 0.683 2.353 0.000 0.132 0.285 0.002
agreeableness goals 0.672 3.306 0.001 0.003 0.015 0.895
agreeableness frequency 0.810 3.773 0.000 0.061 0.181 0.083
conscientiousness goals 0.789 1.902 0.001 -0.058 -0.169 0.149
conscientiousness frequency 0.593 1.443 0.000 0.067 0.102 0.217
neuroticism goals 0.806 1.747 0.000 0.090 0.222 0.053
neuroticism frequency 0.528 1.145 0.000 -0.048 -0.066 0.376
openness goals 0.461 1.717 0.013 -0.020 -0.060 0.558
openness frequency 0.495 1.870 0.006 0.072 0.169 0.108

No moderation effects that are significantly different from zero at p < .001. Only at p < .01 do we find a significant effect:

  • changes in current-level extraversion are moderated by the frequency of self-improvement behaviors

Results summary across the Big Five facets: trait-specific change goals (goals) and frequency of self-improvement behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp6[11:40, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
sociability goals 0.795 2.026 0.001 -0.036 -0.116 0.280
sociability frequency 0.547 1.439 0.000 0.191 0.319 0.001
assertiveness goals 0.669 2.406 0.000 -0.033 -0.153 0.090
assertiveness frequency 0.528 1.960 0.001 0.063 0.146 0.155
energy goals 0.374 2.473 0.012 -0.027 -0.220 0.066
energy frequency 0.464 2.948 0.001 -0.081 -0.317 0.016
compassion goals 0.795 3.204 0.005 0.019 0.106 0.405
compassion frequency 1.006 4.012 0.000 0.075 0.189 0.214
respectfulness goals 1.399 4.481 0.000 -0.019 -0.081 0.362
respectfulness frequency 1.243 3.977 0.001 -0.026 -0.053 0.593
trust goals 0.463 1.476 0.007 -0.032 -0.138 0.226
trust frequency 0.421 1.443 0.010 -0.022 -0.047 0.693
organization goals 0.224 0.457 0.064 -0.001 -0.003 0.979
organization frequency 0.250 0.544 0.056 -0.054 -0.074 0.450
productiveness goals 0.551 0.908 0.005 0.071 0.162 0.113
productiveness frequency 0.656 1.095 0.002 -0.159 -0.166 0.054
responsibility goals 0.764 3.007 0.006 -0.008 -0.044 0.694
responsibility frequency 0.708 2.722 0.000 0.010 0.024 0.829
anxiety goals 0.009 0.022 0.979 0.085 0.301 0.050
anxiety frequency 0.581 1.344 0.000 0.059 0.086 0.467
depression goals 1.192 3.303 0.000 -0.052 -0.234 0.091
depression frequency 0.744 2.000 0.000 0.034 0.057 0.496
volatility goals 0.679 1.187 0.000 0.048 0.121 0.144
volatility frequency 0.730 1.289 0.000 0.028 0.031 0.720
curiosity goals 0.148 0.768 0.694 0.038 0.257 0.075
curiosity frequency 0.472 2.467 0.124 0.121 0.397 0.007
aesthetic goals 0.340 3.438 0.018 0.002 0.023 0.800
aesthetic frequency 0.341 3.407 0.026 0.000 0.001 0.996
imagination goals 0.684 2.021 0.015 -0.018 -0.075 0.487
imagination frequency 0.691 1.982 0.002 0.114 0.205 0.076

Looking at the facets, we only find one moderator effect that significantly differ from zero (p < .001) and two other effects at p < .05:

  • Within extraversion, we find the effect for the frequency of self-improvement behaviors from above represented in the facet sociability, and at p < .05 in energy (but in the other, unexpected direction).
  • Within openness, change in the curiosity facet is moderated by the frequency of self-improvement behaviors (at p < .01).

Prepare data frame for plotting:

Show the code
df_table_hyp6_plot <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp6 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_curr_frequ_hyp6 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_curr_specif_hyp6 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_curr_frequ_hyp6 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_curr_specif_hyp6 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_curr_frequ_hyp6 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_curr_specif_hyp6 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_curr_frequ_hyp6 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_curr_specif_hyp6 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_curr_frequ_hyp6 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_curr_specif_hyp6 %>% filter(term=="d_socia_1 ~ sb07_01_t1"),
  params_lcs_socia_curr_frequ_hyp6 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_curr_specif_hyp6 %>% filter(term=="d_asser_1 ~ sb07_02_t1"),
  params_lcs_asser_curr_frequ_hyp6 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_curr_specif_hyp6 %>% filter(term=="d_energ_1 ~ sb07_03_t1"),
  params_lcs_energ_curr_frequ_hyp6 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_curr_specif_hyp6 %>% filter(term=="d_compa_1 ~ sb07_04_t1"),
  params_lcs_compa_curr_frequ_hyp6 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_curr_specif_hyp6 %>% filter(term=="d_respe_1 ~ sb07_05_t1"),
  params_lcs_respe_curr_frequ_hyp6 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_curr_specif_hyp6 %>% filter(term=="d_trust_1 ~ sb07_06_t1"),
  params_lcs_trust_curr_frequ_hyp6 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_curr_specif_hyp6 %>% filter(term=="d_organ_1 ~ sb07_07_t1"),
  params_lcs_organ_curr_frequ_hyp6 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_curr_specif_hyp6 %>% filter(term=="d_produ_1 ~ sb07_08_t1"),
  params_lcs_produ_curr_frequ_hyp6 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_curr_specif_hyp6 %>% filter(term=="d_respo_1 ~ sb07_09_t1"),
  params_lcs_respo_curr_frequ_hyp6 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_curr_specif_hyp6 %>% filter(term=="d_anxie_1 ~ sb07_10_t1"),
  params_lcs_anxie_curr_frequ_hyp6 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_curr_specif_hyp6 %>% filter(term=="d_depre_1 ~ sb07_11_t1"),
  params_lcs_depre_curr_frequ_hyp6 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_curr_specif_hyp6 %>% filter(term=="d_volat_1 ~ sb07_12_t1"),
  params_lcs_volat_curr_frequ_hyp6 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_curr_specif_hyp6 %>% filter(term=="d_curio_1 ~ sb07_13_t1"),
  params_lcs_curio_curr_frequ_hyp6 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_curr_specif_hyp6 %>% filter(term=="d_aesth_1 ~ sb07_14_t1"),
  params_lcs_aesth_curr_frequ_hyp6 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_curr_specif_hyp6 %>% filter(term=="d_imagi_1 ~ sb07_15_t1"),
  params_lcs_imagi_curr_frequ_hyp6 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp6_plot <- df_table_hyp6_plot %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor("current", levels = c("current"), labels = c("current"))) %>% 
  mutate(moderator = factor(moderator, levels = c("goals", "frequency"), labels = c("goals", "frequency"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses (only showing the moderation effects):

  • current = current-level personality
  • goals = specific, facet-level change goal(s) as moderator
  • frequency = frequency of self-improvement behavior as moderator
Show the code
ggplot(df_table_hyp6_plot, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + moderator, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")

6.6.9.2 Summary: Ideal self

Run models for all facets with a template & loop:

Show the code
# create df for table:

# main effects (change score)
df_table_hyp6_ideal_main <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp6 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_extra_ideal_frequ_hyp6 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_agree_ideal_specif_hyp6 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_agree_ideal_frequ_hyp6 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_consc_ideal_specif_hyp6 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_consc_ideal_frequ_hyp6 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_neuro_ideal_specif_hyp6 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_neuro_ideal_frequ_hyp6 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_openn_ideal_specif_hyp6 %>% filter(term=="d_openn_1 ~1 "),
  params_lcs_openn_ideal_frequ_hyp6 %>% filter(term=="d_openn_1 ~1 "),
  #facets
  params_lcs_socia_ideal_specif_hyp6 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_socia_ideal_frequ_hyp6 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_asser_ideal_specif_hyp6 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_asser_ideal_frequ_hyp6 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_energ_ideal_specif_hyp6 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_energ_ideal_frequ_hyp6 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_compa_ideal_specif_hyp6 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_compa_ideal_frequ_hyp6 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_respe_ideal_specif_hyp6 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_respe_ideal_frequ_hyp6 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_trust_ideal_specif_hyp6 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_trust_ideal_frequ_hyp6 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_organ_ideal_specif_hyp6 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_organ_ideal_frequ_hyp6 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_produ_ideal_specif_hyp6 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_produ_ideal_frequ_hyp6 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_respo_ideal_specif_hyp6 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_respo_ideal_frequ_hyp6 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_anxie_ideal_specif_hyp6 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_anxie_ideal_frequ_hyp6 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_depre_ideal_specif_hyp6 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_depre_ideal_frequ_hyp6 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_volat_ideal_specif_hyp6 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_volat_ideal_frequ_hyp6 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_curio_ideal_specif_hyp6 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_curio_ideal_frequ_hyp6 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_aesth_ideal_specif_hyp6 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_aesth_ideal_frequ_hyp6 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_imagi_ideal_specif_hyp6 %>% filter(term=="d_imagi_1 ~1 "),
  params_lcs_imagi_ideal_frequ_hyp6 %>% filter(term=="d_imagi_1 ~1 ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_main = estimate, std_main = std.all, p_main = p.value)

# moderation effects
df_table_hyp6_ideal_mod <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp6 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_ideal_frequ_hyp6 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_ideal_specif_hyp6 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_ideal_frequ_hyp6 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_ideal_specif_hyp6 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_ideal_frequ_hyp6 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_ideal_specif_hyp6 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_ideal_frequ_hyp6 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_ideal_specif_hyp6 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_ideal_frequ_hyp6 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_ideal_specif_hyp6 %>% filter(term=="d_socia_1 ~ sb07_01_t1"),
  params_lcs_socia_ideal_frequ_hyp6 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_ideal_specif_hyp6 %>% filter(term=="d_asser_1 ~ sb07_02_t1"),
  params_lcs_asser_ideal_frequ_hyp6 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_ideal_specif_hyp6 %>% filter(term=="d_energ_1 ~ sb07_03_t1"),
  params_lcs_energ_ideal_frequ_hyp6 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_ideal_specif_hyp6 %>% filter(term=="d_compa_1 ~ sb07_04_t1"),
  params_lcs_compa_ideal_frequ_hyp6 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_ideal_specif_hyp6 %>% filter(term=="d_respe_1 ~ sb07_05_t1"),
  params_lcs_respe_ideal_frequ_hyp6 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_ideal_specif_hyp6 %>% filter(term=="d_trust_1 ~ sb07_06_t1"),
  params_lcs_trust_ideal_frequ_hyp6 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_ideal_specif_hyp6 %>% filter(term=="d_organ_1 ~ sb07_07_t1"),
  params_lcs_organ_ideal_frequ_hyp6 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_ideal_specif_hyp6 %>% filter(term=="d_produ_1 ~ sb07_08_t1"),
  params_lcs_produ_ideal_frequ_hyp6 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_ideal_specif_hyp6 %>% filter(term=="d_respo_1 ~ sb07_09_t1"),
  params_lcs_respo_ideal_frequ_hyp6 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_ideal_specif_hyp6 %>% filter(term=="d_anxie_1 ~ sb07_10_t1"),
  params_lcs_anxie_ideal_frequ_hyp6 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_ideal_specif_hyp6 %>% filter(term=="d_depre_1 ~ sb07_11_t1"),
  params_lcs_depre_ideal_frequ_hyp6 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_ideal_specif_hyp6 %>% filter(term=="d_volat_1 ~ sb07_12_t1"),
  params_lcs_volat_ideal_frequ_hyp6 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_ideal_specif_hyp6 %>% filter(term=="d_curio_1 ~ sb07_13_t1"),
  params_lcs_curio_ideal_frequ_hyp6 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_ideal_specif_hyp6 %>% filter(term=="d_aesth_1 ~ sb07_14_t1"),
  params_lcs_aesth_ideal_frequ_hyp6 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_ideal_specif_hyp6 %>% filter(term=="d_imagi_1 ~ sb07_15_t1"),
  params_lcs_imagi_ideal_frequ_hyp6 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_mod = estimate, std_mod = std.all, p_mod = p.value)

# combine
df_table_hyp6_ideal <- df_table_hyp6_ideal_main %>% left_join(df_table_hyp6_ideal_mod)

Results summary across the Big Five traits: trait-specific change goals (goals) and frequency of self-improvement behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp6_ideal[1:10, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
extraversion goals 0.668 2.786 0.011 0.039 0.093 0.587
extraversion frequency 0.784 3.334 0.004 0.073 0.199 0.082
agreeableness goals 0.863 3.158 0.000 0.001 0.004 0.969
agreeableness frequency 0.875 3.262 0.000 0.005 0.011 0.914
conscientiousness goals 0.642 2.418 0.072 -0.028 -0.124 0.173
conscientiousness frequency 0.746 2.805 0.050 0.059 0.142 0.129
neuroticism goals 0.463 1.270 0.002 0.031 0.094 0.246
neuroticism frequency 0.498 1.367 0.002 -0.041 -0.072 0.432
openness goals 0.612 4.146 0.014 -0.002 -0.009 0.927
openness frequency 0.647 4.323 0.011 0.021 0.087 0.438

No significant moderation effects at the domain level.

Results summary across the Big Five facets: trait-specific change goals (goals) and frequency of self-improvement behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp6_ideal[11:40, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
sociability goals 0.793 2.934 0.043 -0.041 -0.189 0.081
sociability frequency 0.793 2.875 0.044 0.073 0.168 0.202
assertiveness goals 0.735 3.693 0.100 0.004 0.027 0.787
assertiveness frequency 1.023 4.992 0.039 0.062 0.192 0.138
energy goals -0.078 -0.649 0.838 0.010 0.103 0.414
energy frequency 0.025 0.207 0.949 -0.017 -0.092 0.631
compassion goals 0.083 0.379 0.881 0.038 0.232 0.159
compassion frequency 0.315 1.387 0.559 0.029 0.081 0.676
respectfulness goals 1.410 5.850 0.000 -0.021 -0.115 0.239
respectfulness frequency 1.334 5.528 0.002 0.007 0.018 0.857
trust goals 0.007 0.053 0.973 -0.016 -0.164 0.388
trust frequency -0.076 -0.593 0.706 0.044 0.217 0.376
organization goals 0.312 1.109 0.049 0.025 0.130 0.225
organization frequency 0.476 1.729 0.002 -0.113 -0.266 0.034
productiveness goals 0.013 0.051 0.945 0.027 0.151 0.089
productiveness frequency 0.157 0.630 0.320 -0.045 -0.115 0.254
responsibility goals 0.974 5.091 0.012 -0.003 -0.024 0.818
responsibility frequency 1.054 5.507 0.008 0.028 0.096 0.374
anxiety goals 1.595 6.203 0.033 0.003 0.017 0.840
anxiety frequency 1.652 6.085 0.041 0.015 0.035 0.756
depression goals 1.783 7.163 0.000 -0.009 -0.058 0.400
depression frequency 1.770 7.038 0.000 0.008 0.020 0.793
volatility goals 0.094 0.297 0.596 0.026 0.118 0.214
volatility frequency 0.196 0.621 0.276 -0.051 -0.104 0.366
curiosity goals 0.420 2.971 0.391 0.007 0.064 0.655
curiosity frequency 0.468 3.246 0.325 0.063 0.276 0.109
aesthetic goals 0.415 30.818 0.134 0.000 0.000 0.998
aesthetic frequency 0.417 37.075 0.120 0.000 0.007 0.945
imagination goals 1.433 5.454 0.008 -0.007 -0.037 0.669
imagination frequency 1.505 5.801 0.010 0.047 0.116 0.388

No significant moderation effects at the facet level (at p < .001).

Prepare data frame for plotting:

Show the code
df_table_hyp6_plot_ideal <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp6 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_ideal_frequ_hyp6 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_ideal_specif_hyp6 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_ideal_frequ_hyp6 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_ideal_specif_hyp6 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_ideal_frequ_hyp6 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_ideal_specif_hyp6 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_ideal_frequ_hyp6 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_ideal_specif_hyp6 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_ideal_frequ_hyp6 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_ideal_specif_hyp6 %>% filter(term=="d_socia_1 ~ sb07_01_t1"),
  params_lcs_socia_ideal_frequ_hyp6 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_ideal_specif_hyp6 %>% filter(term=="d_asser_1 ~ sb07_02_t1"),
  params_lcs_asser_ideal_frequ_hyp6 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_ideal_specif_hyp6 %>% filter(term=="d_energ_1 ~ sb07_03_t1"),
  params_lcs_energ_ideal_frequ_hyp6 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_ideal_specif_hyp6 %>% filter(term=="d_compa_1 ~ sb07_04_t1"),
  params_lcs_compa_ideal_frequ_hyp6 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_ideal_specif_hyp6 %>% filter(term=="d_respe_1 ~ sb07_05_t1"),
  params_lcs_respe_ideal_frequ_hyp6 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_ideal_specif_hyp6 %>% filter(term=="d_trust_1 ~ sb07_06_t1"),
  params_lcs_trust_ideal_frequ_hyp6 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_ideal_specif_hyp6 %>% filter(term=="d_organ_1 ~ sb07_07_t1"),
  params_lcs_organ_ideal_frequ_hyp6 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_ideal_specif_hyp6 %>% filter(term=="d_produ_1 ~ sb07_08_t1"),
  params_lcs_produ_ideal_frequ_hyp6 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_ideal_specif_hyp6 %>% filter(term=="d_respo_1 ~ sb07_09_t1"),
  params_lcs_respo_ideal_frequ_hyp6 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_ideal_specif_hyp6 %>% filter(term=="d_anxie_1 ~ sb07_10_t1"),
  params_lcs_anxie_ideal_frequ_hyp6 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_ideal_specif_hyp6 %>% filter(term=="d_depre_1 ~ sb07_11_t1"),
  params_lcs_depre_ideal_frequ_hyp6 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_ideal_specif_hyp6 %>% filter(term=="d_volat_1 ~ sb07_12_t1"),
  params_lcs_volat_ideal_frequ_hyp6 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_ideal_specif_hyp6 %>% filter(term=="d_curio_1 ~ sb07_13_t1"),
  params_lcs_curio_ideal_frequ_hyp6 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_ideal_specif_hyp6 %>% filter(term=="d_aesth_1 ~ sb07_14_t1"),
  params_lcs_aesth_ideal_frequ_hyp6 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_ideal_specif_hyp6 %>% filter(term=="d_imagi_1 ~ sb07_15_t1"),
  params_lcs_imagi_ideal_frequ_hyp6 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp6_plot_ideal <- df_table_hyp6_plot_ideal %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor("ideal", levels = c("ideal"), labels = c("ideal"))) %>% 
  mutate(moderator = factor(moderator, levels = c("goals", "frequency"), labels = c("goals", "frequency"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses (only showing the moderation effects):

  • ideal = ideal-level personality
  • goals = specific, facet-level change goal(s) as moderator
  • frequency = frequency of self-improvement behavior as moderator
Show the code
ggplot(df_table_hyp6_plot_ideal, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + moderator, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")

6.7 H7: Desire to change and frequency of self-acceptance behaviors as moderators of change in personality in self-acceptance group

In the self-acceptance group, change in ideal-self ratings but not change in current-self ratings will be moderated by acceptance goals (both general and trait-/facet-specific goals) and the frequency of self-acceptance behaviors.

We will test this one domain/facet at a time. To test this hypothesis, we will estimate the mean-level difference across time for both current and ideal trait ratings using latent change models and specify acceptance goals (or the frequency of self-acceptance behaviors) as a moderator of latent trait change. We will check in a second set of models whether changes in ideal-self ratings persist from T2 to T3.

Reshape and split data set by intervention group:

Show the code
# from T! to T2
df_sbsa2_wide_pers_sa_mod <- df_sbsa2 %>% 
  filter(rando=="Self-Acceptance" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sa07", # facet-specific acceptance goals
                                  "sa04"))) %>% # frequency self-acceptance behaviors
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("sa07", "sa04")))) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, 
            sa04_01_t1, sa04_02_t1, sa04_03_t1)) # frequency of self-acceptance behaviors measured at T2
# colnames(df_sbsa2_wide_pers_sa_mod)

group_assign <- df_sbsa2 %>% select(pid, rando) %>% unique()

df_sbsa2_wide_pers_sa_mod <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Acceptance") %>% select(-rando, -ends_with("_t3")) %>%
  left_join(df_sbsa2_wide_pers_sa_mod)

# follow-up, from T2 to T3
df_sbsa2_wide_pers_sa_mod_fu <- df_sbsa2 %>% 
  filter(rando=="Self-Acceptance" & time %in% c(1,2)) %>% 
  arrange(pid, time) %>% 
  select(pid, time, starts_with(c("sa07", # facet-specific change goals -> asked at T1
                                  "sa04"))) %>% # frequency self-improvement behaviors -> asked at T2
  pivot_wider(names_from = time,
              names_sep = "_t",
              values_from = c(starts_with(c("sa07", "sa04")))) %>% 
  select(-c(sa07_01_t2, sa07_02_t2, sa07_03_t2, sa07_04_t2, sa07_05_t2, 
            sa07_06_t2, sa07_07_t2, sa07_08_t2, sa07_09_t2, sa07_10_t2, 
            sa07_11_t2, sa07_12_t2, sa07_13_t2, sa07_14_t2, sa07_15_t2, 
            sa04_01_t1, sa04_02_t1, sa04_03_t1)) # frequency of self-improvement behaviors measured at T2
# colnames(df_sbsa2_wide_pers_sa_mod_fu)

df_sbsa2_wide_pers_sa_mod_fu <- df_sbsa2_wide_pers %>% left_join(group_assign) %>% 
  filter(rando=="Self-Acceptance" & !is.na(valid_t2)) %>% select(-rando, -ends_with("_t1")) %>%
  left_join(df_sbsa2_wide_pers_sa_mod_fu)

6.7.1 Big Five traits (run models)

Run models for all traits with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific acceptance goals

trait_template_mod_goal_accept <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for trait_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ goals               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

trait_facets_nrs <- list(a1 = c(1:3), b2 = c(4:6), c3 = c(7:9), d4 = c(10:12), e5 = c(13:15)) # matching facet nrs to traits 

# loop across 5 traits -> change in ideal self
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal (6 = ideal)
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  mod_names = paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal_accept, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"), 
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3"),
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), trait_model_fit))
}  

# loop across 5 traits -> change in current self
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal (6 = ideal)
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  mod_names = paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal_accept, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), # current instead of ideal
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3"),
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), template_filled)) # current instead of ideal
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), trait_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal self ratings)

trait_template_mod_goal_accept_fu <- '
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for trait_t2 
trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for trait_t3 with the equality constrained factor loadings

goals =~ 1*ind_goal_1 + ind_goal_2 + ind_goal_3 # latent variable for moderator

trait_t3 ~ 1*trait_t2     # This parameter regresses trait_t3 perfectly on trait_t2
d_trait_1 =~ 1*trait_t3   # This defines the latent change score factor as measured perfectly by scores on trait_t3
trait_t3 ~ 0*1            # This line constrains the intercept of trait_t3 to 0
trait_t3 ~~ 0*trait_t3    # This fixes the variance of trait_t3 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t2 ~ 1               # This estimates the intercept of trait_t2 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t2 ~~ trait_t2         # This estimates the variance of trait_t2 
trait_t2 ~ goals               # This estimates the moderation effect on personality at T2
d_trait_1 ~ trait_t2 + goals   # This estimates the self-feedback parameter and the moderation effect on the change score

goals ~ 0*1            # This fixes the intercept of the moderator to 0
goals ~~ goals         # This estimates the variance of the moderator

ind01_t2 ~~ ind01_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind02_t2 ~~ ind02_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind03_t2 ~~ ind03_t3   # This allows residual covariance on indicator X3 across T2 and T3

ind01_t2 ~~ res1*ind01_t2   # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2   # This allows residual variance on indicator X2 at T2
ind03_t2 ~~ res3*ind03_t2   # This allows residual variance on indicator X3 at T2

ind01_t3 ~~ res1*ind01_t3  # This allows residual variance on indicator X1 at T3 
ind02_t3 ~~ res2*ind02_t3  # This allows residual variance on indicator X2 at T3 
ind03_t3 ~~ res3*ind03_t3  # This allows residual variance on indicator X3 at T3

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind01_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind02_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind03_t3 ~ m3*1     # This estimates the intercept of X3 at T3

ind_goal_1 ~~ ind_goal_1
ind_goal_2 ~~ ind_goal_2
ind_goal_3 ~~ ind_goal_3

ind_goal_1 ~ 1
ind_goal_2 ~ 1
ind_goal_3 ~ 1
'

# loop across 5 traits -> change in ideal self (from T2 to T3)
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal (6 = ideal)
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  mod_names = paste0("sa07_", str_pad(trait_facets_nrs[[i]], 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(trait_template_mod_goal_accept_fu, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"), 
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3"),
                                         "ind_goal_1" = mod_names[1], "ind_goal_2" = mod_names[2], "ind_goal_3" = mod_names[3]))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), trait_model_fit))
}  

# 2nd, for frequency of self-acceptance behavior

trait_template_mod_frequ_accept <- '
trait_t1 =~ 1*ind01_t1 + lamb2*ind02_t1 + lamb3*ind03_t1 # This specifies the measurement model for extra_t1 
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 with the equality constrained factor loadings

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

trait_t2 ~ 1*trait_t1     # This parameter regresses trait_t2 perfectly on trait_t1
d_trait_1 =~ 1*trait_t2   # This defines the latent change score factor as measured perfectly by scores on trait_t2
trait_t2 ~ 0*1            # This line constrains the intercept of trait_t2 to 0
trait_t2 ~~ 0*trait_t2    # This fixes the variance of trait_t2 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t1 ~ 1               # This estimates the intercept of trait_t1 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t1 ~~ trait_t1         # This estimates the variance of trait_t1 
trait_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_trait_1 ~ trait_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t1 ~~ ind01_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind02_t1 ~~ ind02_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind03_t1 ~~ ind03_t2   # This allows residual covariance on indicator X3 across T1 and T2

ind01_t1 ~~ res1*ind01_t1   # This allows residual variance on indicator X1 at T1 
ind02_t1 ~~ res2*ind02_t1   # This allows residual variance on indicator X2 at T1
ind03_t1 ~~ res3*ind03_t1   # This allows residual variance on indicator X3 at T1

ind01_t2 ~~ res1*ind01_t2  # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2  # This allows residual variance on indicator X2 at T2 
ind03_t2 ~~ res3*ind03_t2  # This allows residual variance on indicator X3 at T2

ind01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind02_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind03_t1 ~ m3*1     # This estimates the intercept of X3 at T1

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 5 traits -> change in ideal self
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ_accept, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"), 
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled)) 
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), trait_model_fit))
}  

# loop across 5 traits -> change in current self
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ_accept, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_curr_par1"), # current instead of ideal
                                         "ind02" = paste0(short_name, "_curr_par2"), 
                                         "ind03" = paste0(short_name, "_curr_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), template_filled)) # current instead of ideal
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), trait_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for current self ratings)

trait_template_mod_frequ_accept_fu <- '
trait_t2 =~ 1*ind01_t2 + lamb2*ind02_t2 + lamb3*ind03_t2 # This specifies the measurement model for extra_t2 
trait_t3 =~ 1*ind01_t3 + lamb2*ind02_t3 + lamb3*ind03_t3 # This specifies the measurement model for extra_t3 with the equality constrained factor loadings

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

trait_t3 ~ 1*trait_t2     # This parameter regresses trait_t3 perfectly on trait_t2
d_trait_1 =~ 1*trait_t3   # This defines the latent change score factor as measured perfectly by scores on trait_t3
trait_t3 ~ 0*1            # This line constrains the intercept of trait_t3 to 0
trait_t3 ~~ 0*trait_t3    # This fixes the variance of trait_t3 to 0

d_trait_1 ~ 1              # This estimates the intercept of the change score 
trait_t2 ~ 1               # This estimates the intercept of trait_t2 
d_trait_1 ~~ d_trait_1     # This estimates the variance of the change scores 
trait_t2 ~~ trait_t2         # This estimates the variance of trait_t2 
trait_t2 ~ frequ               # This estimates the moderation effect on personality at T2
d_trait_1 ~ trait_t2 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind01_t2 ~~ ind01_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind02_t2 ~~ ind02_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind03_t2 ~~ ind03_t3   # This allows residual covariance on indicator X3 across T2 and T3

ind01_t2 ~~ res1*ind01_t2   # This allows residual variance on indicator X1 at T2 
ind02_t2 ~~ res2*ind02_t2   # This allows residual variance on indicator X2 at T2
ind03_t2 ~~ res3*ind03_t2   # This allows residual variance on indicator X3 at T2

ind01_t3 ~~ res1*ind01_t3  # This allows residual variance on indicator X1 at T3 
ind02_t3 ~~ res2*ind02_t3  # This allows residual variance on indicator X2 at T3 
ind03_t3 ~~ res3*ind03_t3  # This allows residual variance on indicator X3 at T3

ind01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind02_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind03_t2 ~ m3*1     # This estimates the intercept of X3 at T2

ind01_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind02_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind03_t3 ~ m3*1     # This estimates the intercept of X3 at T3

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 5 traits -> change in ideal self (from T2 to T3)
for (i in 1:5) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  # items = paste0(bfi_versions[[6]], item_nrs) # using parcels instead!
  template_filled <- str_replace_all(trait_template_mod_frequ_accept_fu, 
                                       c("trait" = short_name,
                                         "ind01" = paste0(short_name, "_ideal_par1"), 
                                         "ind02" = paste0(short_name, "_ideal_par2"), 
                                         "ind03" = paste0(short_name, "_ideal_par3")))
  trait_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), template_filled)) 
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), trait_model_fit))
}  

6.7.2 Big Five traits (ideal self)

6.7.2.1 Extraversion: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6351.424 6450.669 0.995 0.018 0.041
# parameters of interest
params_lcs_extra_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.984 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.636 NA NA
d_extra_1 ~1 0.674 0.077 1.271 2.594 2.214 0.027
extra_t1 ~1 3.689 3.625 3.753 9.175 113.322 0.000
d_extra_1 ~~ d_extra_1 0.061 0.023 0.099 0.906 3.172 0.002
extra_t1 ~ goals 0.047 -0.039 0.133 0.102 1.069 0.285
d_extra_1 ~ extra_t1 -0.188 -0.348 -0.028 -0.291 -2.305 0.021
d_extra_1 ~ goals -0.022 -0.087 0.043 -0.073 -0.658 0.511
goals ~~ goals 0.757 0.374 1.139 1.000 3.874 0.000

The moderation effect of specific, facet-level acceptance goals with the extraversion change score (ideal-self) is not significantly different from zero, b = -0.022, p = 0.511.

6.7.2.2 Extraversion: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5346.201 5445.446 0.988 0.031 0.043
# parameters of interest
params_lcs_extra_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_extra_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 0.987 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.635 NA NA
d_extra_1 ~1 0.791 0.167 1.415 3.078 2.485 0.013
extra_t1 ~1 3.689 3.625 3.752 9.238 113.309 0.000
d_extra_1 ~~ d_extra_1 0.059 0.022 0.096 0.894 3.153 0.002
extra_t1 ~ frequ 0.163 0.067 0.259 0.303 3.336 0.001
d_extra_1 ~ extra_t1 -0.219 -0.386 -0.053 -0.341 -2.578 0.010
d_extra_1 ~ frequ 0.045 -0.033 0.123 0.129 1.129 0.259
frequ ~~ frequ 0.549 0.370 0.728 1.000 6.023 0.000

The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score (ideal-self) is not significantly different from zero, b = 0.045, p = 0.259.

6.7.2.3 Agreeableness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6066.273 6165.518 0.989 0.038 0.04
# parameters of interest
params_lcs_agree_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.013 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.623 NA NA
d_agree_1 ~1 0.789 0.313 1.264 2.857 3.248 0.001
agree_t1 ~1 3.778 3.705 3.851 8.422 101.648 0.000
d_agree_1 ~~ d_agree_1 0.068 0.040 0.095 0.886 4.766 0.000
agree_t1 ~ goals -0.050 -0.111 0.011 -0.106 -1.610 0.107
d_agree_1 ~ agree_t1 -0.207 -0.329 -0.085 -0.337 -3.322 0.001
d_agree_1 ~ goals -0.022 -0.076 0.032 -0.076 -0.808 0.419
goals ~~ goals 0.895 0.578 1.212 1.000 5.539 0.000

The moderation effect of specific, facet-level acceptance goals with the agreeableness change score (ideal-self) is not significantly different from zero, b = -0.022, p = 0.419.

6.7.2.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5211.403 5310.648 0.993 0.029 0.036
# parameters of interest
params_lcs_agree_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_agree_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 1.012 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.622 NA NA
d_agree_1 ~1 0.860 0.361 1.359 3.146 3.378 0.001
agree_t1 ~1 3.778 3.705 3.851 8.498 101.706 0.000
d_agree_1 ~~ d_agree_1 0.065 0.038 0.091 0.867 4.773 0.000
agree_t1 ~ frequ 0.148 0.056 0.240 0.245 3.163 0.002
d_agree_1 ~ agree_t1 -0.226 -0.354 -0.098 -0.367 -3.456 0.001
d_agree_1 ~ frequ 0.062 -0.009 0.133 0.168 1.724 0.085
frequ ~~ frequ 0.542 0.362 0.721 1.000 5.908 0.000

The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score (ideal-self) is not significantly different from zero, b = 0.062, p = 0.085.

6.7.2.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5703.585 5802.83 1 0 0.03
# parameters of interest
params_lcs_consc_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.034 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.741 NA NA
d_consc_1 ~1 1.296 0.698 1.894 4.110 4.247 0.000
consc_t1 ~1 4.339 4.279 4.400 9.858 141.189 0.000
d_consc_1 ~~ d_consc_1 0.081 0.048 0.114 0.816 4.805 0.000
consc_t1 ~ goals -0.014 -0.067 0.040 -0.033 -0.504 0.615
d_consc_1 ~ consc_t1 -0.293 -0.427 -0.159 -0.409 -4.288 0.000
d_consc_1 ~ goals -0.043 -0.087 0.001 -0.145 -1.904 0.057
goals ~~ goals 1.133 0.835 1.431 1.000 7.460 0.000

The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score (ideal-self) is not significantly different from zero, b = -0.043, p = 0.057.

6.7.2.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 4797.333 4896.578 0.992 0.031 0.029
# parameters of interest
params_lcs_consc_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_consc_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 1.034 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.740 NA NA
d_consc_1 ~1 1.369 0.775 1.963 4.335 4.517 0.000
consc_t1 ~1 4.339 4.279 4.400 9.838 141.177 0.000
d_consc_1 ~~ d_consc_1 0.080 0.047 0.113 0.800 4.757 0.000
consc_t1 ~ frequ 0.089 -0.008 0.186 0.148 1.801 0.072
d_consc_1 ~ consc_t1 -0.309 -0.442 -0.176 -0.432 -4.556 0.000
d_consc_1 ~ frequ 0.084 0.020 0.148 0.195 2.581 0.010
frequ ~~ frequ 0.537 0.358 0.716 1.000 5.879 0.000

The frequency of self-acceptance behaviors significantly moderates changes in conscientiousness (ideal-self), b = 0.084, p = 0.01.

6.7.2.7 Neuroticism: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5929.674 6028.919 0.99 0.034 0.045
# parameters of interest
params_lcs_neuro_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.066 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.699 NA NA
d_neuro_1 ~1 0.475 0.259 0.690 1.357 4.310 0.000
neuro_t1 ~1 1.751 1.685 1.818 3.281 51.766 0.000
d_neuro_1 ~~ d_neuro_1 0.101 0.057 0.144 0.824 4.555 0.000
neuro_t1 ~ goals 0.035 -0.034 0.104 0.064 0.995 0.320
d_neuro_1 ~ neuro_t1 -0.275 -0.407 -0.142 -0.419 -4.060 0.000
d_neuro_1 ~ goals 0.000 -0.053 0.053 -0.001 -0.009 0.993
goals ~~ goals 0.949 0.631 1.267 1.000 5.852 0.000

The moderation effect of specific, facet-level acceptance goals with the neuroticism change score (ideal-self) is not significantly different from zero, b = 0, p = 0.993.

6.7.2.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5014.139 5113.384 0.997 0.019 0.036
# parameters of interest
params_lcs_neuro_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_neuro_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 1.065 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.698 NA NA
d_neuro_1 ~1 0.481 0.264 0.698 1.368 4.349 0.000
neuro_t1 ~1 1.751 1.685 1.818 3.263 51.737 0.000
d_neuro_1 ~~ d_neuro_1 0.102 0.058 0.146 0.824 4.541 0.000
neuro_t1 ~ frequ -0.151 -0.264 -0.039 -0.209 -2.644 0.008
d_neuro_1 ~ neuro_t1 -0.278 -0.411 -0.145 -0.425 -4.100 0.000
d_neuro_1 ~ frequ -0.015 -0.096 0.066 -0.032 -0.370 0.711
frequ ~~ frequ 0.546 0.366 0.727 1.000 5.940 0.000

The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score (ideal-self) is not significantly different from zero, b = -0.015, p = 0.711.

6.7.2.9 Openness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5972.654 6071.899 0.989 0.037 0.033
# parameters of interest
params_lcs_openn_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.048 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.730 NA NA
d_openn_1 ~1 1.229 0.709 1.748 5.729 4.637 0.000
openn_t1 ~1 3.907 3.848 3.966 12.686 130.383 0.000
d_openn_1 ~~ d_openn_1 0.038 0.017 0.058 0.823 3.592 0.000
openn_t1 ~ goals -0.147 -0.207 -0.088 -0.370 -4.840 0.000
d_openn_1 ~ openn_t1 -0.311 -0.442 -0.179 -0.446 -4.630 0.000
d_openn_1 ~ goals -0.025 -0.066 0.015 -0.092 -1.230 0.219
goals ~~ goals 0.599 0.384 0.814 1.000 5.457 0.000

The moderation effect of specific, facet-level acceptance goals with the openness change score (ideal-self) is not significantly different from zero, b = -0.025, p = 0.219.

6.7.2.10 Openness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5289.278 5388.523 0.991 0.03 0.038
# parameters of interest
params_lcs_openn_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_openn_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.047 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.731 NA NA
d_openn_1 ~1 1.175 0.684 1.666 5.437 4.689 0.000
openn_t1 ~1 3.907 3.848 3.966 12.636 130.274 0.000
d_openn_1 ~~ d_openn_1 0.038 0.018 0.059 0.822 3.625 0.000
openn_t1 ~ frequ 0.060 -0.003 0.122 0.142 1.878 0.060
d_openn_1 ~ openn_t1 -0.297 -0.421 -0.173 -0.425 -4.694 0.000
d_openn_1 ~ frequ 0.027 -0.020 0.074 0.093 1.133 0.257
frequ ~~ frequ 0.545 0.366 0.723 1.000 5.968 0.000

The moderation effect of frequency of self-acceptance behaviors with the openness change score (ideal-self) is not significantly different from zero, b = 0.027, p = 0.257.

6.7.3 Big Five traits (ideal self - follow-up at T3)

6.7.3.1 Extraversion: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 5406.123 5500.996 1 0 0.035
# parameters of interest
params_lcs_extra_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_extra_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t3 ~ extra_t2", "d_extra_1 =~ extra_t3", "d_extra_1 ~ extra_t2", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t2 ~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t2 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t3 ~ extra_t2 1.000 1.000 1.000 1.033 NA NA
d_extra_1 =~ extra_t3 1.000 1.000 1.000 0.539 NA NA
d_extra_1 ~1 0.614 0.139 1.089 2.883 2.535 0.011
extra_t2 ~1 3.650 3.577 3.724 8.950 97.362 0.000
d_extra_1 ~~ d_extra_1 0.040 0.014 0.066 0.877 2.991 0.003
extra_t2 ~ goals 0.015 -0.073 0.102 0.031 0.326 0.744
d_extra_1 ~ extra_t2 -0.170 -0.299 -0.041 -0.326 -2.587 0.010
d_extra_1 ~ goals 0.035 -0.038 0.108 0.142 0.941 0.347
goals ~~ goals 0.745 0.329 1.161 1.000 3.508 0.000

The moderation effect of specific, facet-level acceptance goals with the extraversion change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.035, p = 0.347.

6.7.3.2 Extraversion: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4903.142 4998.016 0.994 0.023 0.039
# parameters of interest
params_lcs_extra_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_extra_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t3 ~ extra_t2", "d_extra_1 =~ extra_t3", "d_extra_1 ~ extra_t2", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t2 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t2 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t3 ~ extra_t2 1.000 1.000 1.000 1.030 NA NA
d_extra_1 =~ extra_t3 1.000 1.000 1.000 0.542 NA NA
d_extra_1 ~1 0.613 0.085 1.142 2.912 2.275 0.023
extra_t2 ~1 3.650 3.577 3.724 9.117 97.559 0.000
d_extra_1 ~~ d_extra_1 0.040 0.014 0.065 0.899 3.058 0.002
extra_t2 ~ frequ 0.171 0.076 0.266 0.314 3.518 0.000
d_extra_1 ~ extra_t2 -0.170 -0.314 -0.026 -0.323 -2.319 0.020
d_extra_1 ~ frequ 0.005 -0.068 0.078 0.018 0.140 0.888
frequ ~~ frequ 0.542 0.365 0.720 1.000 5.999 0.000

The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.005, p = 0.888.

6.7.3.3 Agreeableness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 5014.761 5109.635 0.997 0.022 0.037
# parameters of interest
params_lcs_agree_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_agree_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t3 ~ agree_t2", "d_agree_1 =~ agree_t3", "d_agree_1 ~ agree_t2", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t2 ~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t2 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t3 ~ agree_t2 1.000 1.000 1.000 1.026 NA NA
d_agree_1 =~ agree_t3 1.000 1.000 1.000 0.480 NA NA
d_agree_1 ~1 0.493 0.118 0.869 2.223 2.574 0.010
agree_t2 ~1 3.814 3.736 3.892 8.043 96.133 0.000
d_agree_1 ~~ d_agree_1 0.045 0.015 0.075 0.915 2.897 0.004
agree_t2 ~ goals -0.088 -0.161 -0.014 -0.176 -2.337 0.019
d_agree_1 ~ agree_t2 -0.130 -0.226 -0.033 -0.277 -2.626 0.009
d_agree_1 ~ goals 0.013 -0.032 0.057 0.055 0.569 0.569
goals ~~ goals 0.904 0.560 1.247 1.000 5.155 0.000

The moderation effect of specific, facet-level acceptance goals with the agreeableness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.013, p = 0.569.

6.7.3.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4670.112 4764.986 0.995 0.027 0.036
# parameters of interest
params_lcs_agree_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_agree_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t3 ~ agree_t2", "d_agree_1 =~ agree_t3", "d_agree_1 ~ agree_t2", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t2 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t2 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t3 ~ agree_t2 1.000 1.000 1.000 1.026 NA NA
d_agree_1 =~ agree_t3 1.000 1.000 1.000 0.481 NA NA
d_agree_1 ~1 0.438 0.032 0.845 1.993 2.112 0.035
agree_t2 ~1 3.814 3.736 3.892 8.124 96.192 0.000
d_agree_1 ~~ d_agree_1 0.043 0.014 0.073 0.898 2.888 0.004
agree_t2 ~ frequ 0.183 0.094 0.273 0.287 4.018 0.000
d_agree_1 ~ agree_t2 -0.115 -0.219 -0.012 -0.246 -2.182 0.029
d_agree_1 ~ frequ -0.043 -0.108 0.022 -0.145 -1.308 0.191
frequ ~~ frequ 0.541 0.362 0.720 1.000 5.933 0.000

The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.043, p = 0.191.

6.7.3.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4711.962 4806.835 0.978 0.056 0.038
# parameters of interest
params_lcs_consc_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_consc_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t3 ~ consc_t2", "d_consc_1 =~ consc_t3", "d_consc_1 ~ consc_t2", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t2 ~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t2 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t3 ~ consc_t2 1.000 1.000 1.000 0.942 NA NA
d_consc_1 =~ consc_t3 1.000 1.000 1.000 0.476 NA NA
d_consc_1 ~1 0.265 -0.324 0.853 1.155 0.881 0.378
consc_t2 ~1 4.365 4.297 4.433 9.629 126.254 0.000
d_consc_1 ~~ d_consc_1 0.052 0.020 0.083 0.984 3.239 0.001
consc_t2 ~ goals -0.056 -0.115 0.003 -0.131 -1.850 0.064
d_consc_1 ~ consc_t2 -0.064 -0.194 0.066 -0.126 -0.959 0.337
d_consc_1 ~ goals 0.002 -0.045 0.049 0.009 0.077 0.938
goals ~~ goals 1.122 0.799 1.446 1.000 6.797 0.000

The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.002, p = 0.938.

6.7.3.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4295.346 4390.219 0.973 0.062 0.039
# parameters of interest
params_lcs_consc_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_consc_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t3 ~ consc_t2", "d_consc_1 =~ consc_t3", "d_consc_1 ~ consc_t2", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t2 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t2 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t3 ~ consc_t2 1.000 1.000 1.000 0.940 NA NA
d_consc_1 =~ consc_t3 1.000 1.000 1.000 0.474 NA NA
d_consc_1 ~1 0.121 -0.506 0.749 0.530 0.379 0.704
consc_t2 ~1 4.365 4.297 4.433 9.605 126.263 0.000
d_consc_1 ~~ d_consc_1 0.049 0.019 0.080 0.935 3.146 0.002
consc_t2 ~ frequ 0.158 0.059 0.258 0.255 3.110 0.002
d_consc_1 ~ consc_t2 -0.031 -0.170 0.107 -0.062 -0.441 0.659
d_consc_1 ~ frequ -0.072 -0.145 0.000 -0.231 -1.960 0.050
frequ ~~ frequ 0.536 0.358 0.715 1.000 5.897 0.000

The moderation effect of the frequency of self-acceptance behaviors with the conscientiousness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.072, p = 0.05.

6.7.3.7 Neuroticism: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 5022.118 5116.991 0.993 0.028 0.034
# parameters of interest
params_lcs_neuro_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_neuro_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t3 ~ neuro_t2", "d_neuro_1 =~ neuro_t3", "d_neuro_1 ~ neuro_t2", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t2 ~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t2 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t3 ~ neuro_t2 1.000 1.000 1.000 0.992 NA NA
d_neuro_1 =~ neuro_t3 1.000 1.000 1.000 0.476 NA NA
d_neuro_1 ~1 0.211 0.004 0.418 0.887 1.994 0.046
neuro_t2 ~1 1.747 1.676 1.819 3.531 48.088 0.000
d_neuro_1 ~~ d_neuro_1 0.054 0.012 0.095 0.950 2.555 0.011
neuro_t2 ~ goals 0.027 -0.041 0.095 0.050 0.769 0.442
d_neuro_1 ~ neuro_t2 -0.107 -0.231 0.016 -0.224 -1.703 0.089
d_neuro_1 ~ goals 0.006 -0.047 0.060 0.025 0.237 0.812
goals ~~ goals 0.865 0.521 1.209 1.000 4.932 0.000

The moderation effect of specific, facet-level acceptance goals with the neuroticism change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.006, p = 0.812.

6.7.3.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4600.913 4695.786 0.992 0.03 0.032
# parameters of interest
params_lcs_neuro_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_neuro_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t3 ~ neuro_t2", "d_neuro_1 =~ neuro_t3", "d_neuro_1 ~ neuro_t2", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t2 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t2 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t3 ~ neuro_t2 1.000 1.000 1.000 0.991 NA NA
d_neuro_1 =~ neuro_t3 1.000 1.000 1.000 0.476 NA NA
d_neuro_1 ~1 0.175 -0.035 0.384 0.733 1.636 0.102
neuro_t2 ~1 1.747 1.676 1.819 3.514 48.024 0.000
d_neuro_1 ~~ d_neuro_1 0.051 0.009 0.093 0.895 2.400 0.016
neuro_t2 ~ frequ -0.118 -0.215 -0.021 -0.174 -2.377 0.017
d_neuro_1 ~ neuro_t2 -0.086 -0.213 0.040 -0.180 -1.339 0.181
d_neuro_1 ~ frequ 0.078 0.002 0.154 0.240 2.014 0.044
frequ ~~ frequ 0.539 0.361 0.716 1.000 5.941 0.000

The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score from T2 to T3 (ideal-self) is not significantly different from zero (at p < .001), b = 0.078, p = 0.044.

6.7.3.9 Openness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 5101.72 5196.593 1 0 0.027
# parameters of interest
params_lcs_openn_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_openn_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t3 ~ openn_t2", "d_openn_1 =~ openn_t3", "d_openn_1 ~ openn_t2", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t2 ~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t2 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t3 ~ openn_t2 1.000 1.000 1.000 0.948 NA NA
d_openn_1 =~ openn_t3 1.000 1.000 1.000 0.565 NA NA
d_openn_1 ~1 0.531 -0.175 1.237 3.346 1.475 0.140
openn_t2 ~1 3.856 3.795 3.918 14.493 122.448 0.000
d_openn_1 ~~ d_openn_1 0.024 0.008 0.040 0.954 2.979 0.003
openn_t2 ~ goals -0.118 -0.169 -0.066 -0.343 -4.497 0.000
d_openn_1 ~ openn_t2 -0.136 -0.317 0.044 -0.229 -1.486 0.137
d_openn_1 ~ goals -0.015 -0.056 0.026 -0.074 -0.723 0.470
goals ~~ goals 0.602 0.365 0.840 1.000 4.971 0.000

The moderation effect of specific, facet-level acceptance goals with the openness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.015, p = 0.47.

6.7.3.10 Openness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 26 4867.833 4962.706 1 0.005 0.035
# parameters of interest
params_lcs_openn_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_openn_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t3 ~ openn_t2", "d_openn_1 =~ openn_t3", "d_openn_1 ~ openn_t2", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t2 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t2 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t3 ~ openn_t2 1.000 1.000 1.000 0.949 NA NA
d_openn_1 =~ openn_t3 1.000 1.000 1.000 0.569 NA NA
d_openn_1 ~1 0.508 -0.171 1.186 3.143 1.467 0.142
openn_t2 ~1 3.856 3.795 3.918 14.314 122.309 0.000
d_openn_1 ~~ d_openn_1 0.025 0.009 0.041 0.954 3.014 0.003
openn_t2 ~ frequ 0.065 0.012 0.119 0.179 2.389 0.017
d_openn_1 ~ openn_t2 -0.130 -0.303 0.042 -0.217 -1.481 0.138
d_openn_1 ~ frequ 0.012 -0.032 0.055 0.053 0.520 0.603
frequ ~~ frequ 0.544 0.366 0.723 1.000 5.981 0.000

The moderation effect of frequency of self-acceptance behaviors with the openness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.012, p = 0.603.

6.7.4 Big Five traits (current self)

6.7.4.1 Extraversion: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6803.171 6902.416 0.974 0.062 0.043
# parameters of interest
params_lcs_extra_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_extra_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ goals", "goals ~~ goals", "extra_t1 ~ goals", # acceptance goals
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.027 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.451 NA NA
d_extra_1 ~1 0.510 0.191 0.828 1.902 3.139 0.002
extra_t1 ~1 3.030 2.942 3.118 4.972 67.579 0.000
d_extra_1 ~~ d_extra_1 0.066 0.034 0.098 0.920 4.010 0.000
extra_t1 ~ goals -0.390 -0.524 -0.256 -0.620 -5.703 0.000
d_extra_1 ~ extra_t1 -0.138 -0.241 -0.034 -0.313 -2.606 0.009
d_extra_1 ~ goals -0.015 -0.097 0.067 -0.055 -0.365 0.715
goals ~~ goals 0.938 0.600 1.277 1.000 5.431 0.000

The moderation effect of specific, facet-level acceptance goals with the extraversion change score (current-self) is not significantly different from zero, b = -0.015, p = 0.715.

6.7.4.2 Extraversion: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_extra_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5889.596 5988.841 0.994 0.03 0.034
# parameters of interest
params_lcs_extra_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_extra_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("extra_t2 ~ extra_t1", "d_extra_1 =~ extra_t2", "d_extra_1 ~ extra_t1", # change parameters
                           "d_extra_1 ~ frequ", "frequ ~~ frequ", "extra_t1 ~ frequ", # frequency of self improvement
                           "d_extra_1 ~1 ", "extra_t1 ~1 ", "", # means
                           "d_extra_1 ~~ d_extra_1"))
kable(params_lcs_extra_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
extra_t2 ~ extra_t1 1.000 1.000 1.000 1.026 NA NA
d_extra_1 =~ extra_t2 1.000 1.000 1.000 0.450 NA NA
d_extra_1 ~1 0.470 0.252 0.687 1.802 4.232 0.000
extra_t1 ~1 3.032 2.944 3.119 5.096 67.775 0.000
d_extra_1 ~~ d_extra_1 0.062 0.030 0.093 0.907 3.854 0.000
extra_t1 ~ frequ 0.063 -0.069 0.195 0.078 0.938 0.348
d_extra_1 ~ extra_t1 -0.126 -0.196 -0.055 -0.286 -3.497 0.000
d_extra_1 ~ frequ 0.046 -0.026 0.118 0.130 1.252 0.211
frequ ~~ frequ 0.540 0.361 0.720 1.000 5.893 0.000

The moderation effect of the frequency of self-acceptance behaviors with the extraversion change score (current-self) is not significantly different from zero, b = 0.046, p = 0.211.

6.7.4.3 Agreeableness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6043.077 6142.322 0.988 0.037 0.029
# parameters of interest
params_lcs_agree_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_agree_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ goals", "goals ~~ goals", "agree_t1 ~ goals", # acceptance goals
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 0.967 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.524 NA NA
d_agree_1 ~1 0.550 0.073 1.028 2.733 2.258 0.024
agree_t1 ~1 3.462 3.398 3.525 9.309 107.614 0.000
d_agree_1 ~~ d_agree_1 0.037 0.012 0.061 0.902 2.932 0.003
agree_t1 ~ goals -0.115 -0.178 -0.052 -0.298 -3.580 0.000
d_agree_1 ~ agree_t1 -0.152 -0.290 -0.014 -0.281 -2.164 0.030
d_agree_1 ~ goals -0.051 -0.105 0.002 -0.247 -1.878 0.060
goals ~~ goals 0.932 0.655 1.209 1.000 6.591 0.000

The moderation effect of specific, facet-level acceptance goals with the agreeableness change score (current-self) is not significantly different from zero, b = -0.051, p = 0.06.

6.7.4.4 Agreeableness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_agree_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5232.872 5332.117 0.995 0.024 0.041
# parameters of interest
params_lcs_agree_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_agree_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("agree_t2 ~ agree_t1", "d_agree_1 =~ agree_t2", "d_agree_1 ~ agree_t1", # change parameters
                           "d_agree_1 ~ frequ", "frequ ~~ frequ", "agree_t1 ~ frequ", # frequency of self improvement
                           "d_agree_1 ~1 ", "agree_t1 ~1 ", "", # means
                           "d_agree_1 ~~ d_agree_1"))
kable(params_lcs_agree_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
agree_t2 ~ agree_t1 1.000 1.000 1.000 0.963 NA NA
d_agree_1 =~ agree_t2 1.000 1.000 1.000 0.522 NA NA
d_agree_1 ~1 0.421 -0.015 0.858 2.051 1.891 0.059
agree_t1 ~1 3.461 3.398 3.524 9.130 107.741 0.000
d_agree_1 ~~ d_agree_1 0.040 0.009 0.070 0.944 2.567 0.010
agree_t1 ~ frequ 0.047 -0.036 0.129 0.090 1.112 0.266
d_agree_1 ~ agree_t1 -0.114 -0.239 0.011 -0.211 -1.792 0.073
d_agree_1 ~ frequ 0.036 -0.021 0.092 0.128 1.243 0.214
frequ ~~ frequ 0.539 0.362 0.717 1.000 5.949 0.000

The moderation effect of the frequency of self-acceptance behaviors with the agreeableness change score (current-self) is not significantly different from zero, b = 0.036, p = 0.214.

6.7.4.5 Conscientiousness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6265.051 6364.296 0.98 0.064 0.028
# parameters of interest
params_lcs_consc_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_consc_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ goals", "goals ~~ goals", "consc_t1 ~ goals", # acceptance goals
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.983 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.512 NA NA
d_consc_1 ~1 0.578 0.208 0.947 1.660 3.067 0.002
consc_t1 ~1 3.380 3.299 3.461 5.053 81.588 0.000
d_consc_1 ~~ d_consc_1 0.114 0.077 0.152 0.943 5.966 0.000
consc_t1 ~ goals -0.388 -0.471 -0.305 -0.644 -9.162 0.000
d_consc_1 ~ consc_t1 -0.149 -0.256 -0.042 -0.286 -2.740 0.006
d_consc_1 ~ goals -0.029 -0.100 0.042 -0.092 -0.796 0.426
goals ~~ goals 1.232 0.954 1.510 1.000 8.696 0.000

The moderation effect of specific, facet-level acceptance goals with the conscientiousness change score (current-self) is not significantly different from zero, b = -0.029, p = 0.426.

6.7.4.6 Conscientiousness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_consc_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5479.454 5578.699 0.998 0.018 0.03
# parameters of interest
params_lcs_consc_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_consc_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("consc_t2 ~ consc_t1", "d_consc_1 =~ consc_t2", "d_consc_1 ~ consc_t1", # change parameters
                           "d_consc_1 ~ frequ", "frequ ~~ frequ", "consc_t1 ~ frequ", # frequency of self improvement
                           "d_consc_1 ~1 ", "consc_t1 ~1 ", "", # means
                           "d_consc_1 ~~ d_consc_1"))
kable(params_lcs_consc_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
consc_t2 ~ consc_t1 1.000 1.000 1.000 0.984 NA NA
d_consc_1 =~ consc_t2 1.000 1.000 1.000 0.512 NA NA
d_consc_1 ~1 0.499 0.256 0.743 1.434 4.019 0.000
consc_t1 ~1 3.380 3.299 3.461 5.054 81.596 0.000
d_consc_1 ~~ d_consc_1 0.114 0.076 0.152 0.940 5.835 0.000
consc_t1 ~ frequ 0.128 -0.016 0.272 0.141 1.743 0.081
d_consc_1 ~ consc_t1 -0.126 -0.195 -0.057 -0.241 -3.568 0.000
d_consc_1 ~ frequ 0.043 -0.031 0.118 0.091 1.136 0.256
frequ ~~ frequ 0.539 0.359 0.719 1.000 5.879 0.000

The frequency of self-acceptance behaviors significantly moderates changes in conscientiousness (current-self), b = 0.043, p = 0.256.

6.7.4.7 Neuroticism: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6521.254 6620.499 0.992 0.042 0.029
# parameters of interest
params_lcs_neuro_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_neuro_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ goals", "goals ~~ goals", "neuro_t1 ~ goals", # acceptance goals
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.990 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.462 NA NA
d_neuro_1 ~1 0.244 -0.016 0.504 0.655 1.838 0.066
neuro_t1 ~1 3.250 3.157 3.342 4.077 68.940 0.000
d_neuro_1 ~~ d_neuro_1 0.131 0.089 0.173 0.943 6.085 0.000
neuro_t1 ~ goals 0.410 0.301 0.519 0.517 7.384 0.000
d_neuro_1 ~ neuro_t1 -0.129 -0.207 -0.051 -0.277 -3.243 0.001
d_neuro_1 ~ goals 0.046 -0.025 0.117 0.125 1.276 0.202
goals ~~ goals 1.009 0.733 1.285 1.000 7.172 0.000

The moderation effect of specific, facet-level acceptance goals with the neuroticism change score (current-self) is not significantly different from zero, b = 0.046, p = 0.202.

6.7.4.8 Neuroticism: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_neuro_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5686.154 5785.398 1 0 0.04
# parameters of interest
params_lcs_neuro_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_neuro_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("neuro_t2 ~ neuro_t1", "d_neuro_1 =~ neuro_t2", "d_neuro_1 ~ neuro_t1", # change parameters
                           "d_neuro_1 ~ frequ", "frequ ~~ frequ", "neuro_t1 ~ frequ", # frequency of self improvement
                           "d_neuro_1 ~1 ", "neuro_t1 ~1 ", "", # means
                           "d_neuro_1 ~~ d_neuro_1"))
kable(params_lcs_neuro_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
neuro_t2 ~ neuro_t1 1.000 1.000 1.000 0.990 NA NA
d_neuro_1 =~ neuro_t2 1.000 1.000 1.000 0.463 NA NA
d_neuro_1 ~1 0.117 -0.089 0.322 0.312 1.110 0.267
neuro_t1 ~1 3.250 3.158 3.342 4.066 68.947 0.000
d_neuro_1 ~~ d_neuro_1 0.128 0.085 0.170 0.914 5.846 0.000
neuro_t1 ~ frequ 0.107 -0.036 0.251 0.100 1.466 0.143
d_neuro_1 ~ neuro_t1 -0.090 -0.153 -0.027 -0.193 -2.819 0.005
d_neuro_1 ~ frequ -0.101 -0.192 -0.011 -0.201 -2.188 0.029
frequ ~~ frequ 0.554 0.373 0.735 1.000 5.993 0.000

The moderation effect of the frequency of self-acceptance behaviors with the neuroticism change score (current-self) is not significantly different from zero (at p < .001), b = -0.101, p = 0.029.

6.7.4.9 Openness: specific, facet-level acceptance goals as moderator of change

Results summary (goals = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 6027.912 6127.157 0.993 0.037 0.032
# parameters of interest
params_lcs_openn_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_openn_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ goals", "goals ~~ goals", "openn_t1 ~ goals", # acceptance goals
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.021 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.408 NA NA
d_openn_1 ~1 0.435 0.102 0.767 1.838 2.564 0.010
openn_t1 ~1 3.565 3.490 3.640 6.028 93.319 0.000
d_openn_1 ~~ d_openn_1 0.052 0.025 0.080 0.937 3.711 0.000
openn_t1 ~ goals -0.396 -0.502 -0.290 -0.524 -7.339 0.000
d_openn_1 ~ openn_t1 -0.101 -0.193 -0.009 -0.252 -2.143 0.032
d_openn_1 ~ goals -0.001 -0.079 0.078 -0.002 -0.017 0.987
goals ~~ goals 0.611 0.396 0.826 1.000 5.579 0.000

The moderation effect of specific, facet-level acceptance goals with the openness change score (current-self) is not significantly different from zero, b = -0.001, p = 0.987.

6.7.4.10 Openness: frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self improvement behavior):

# model fit
kable(broom::glance(fit_mi_lcs_openn_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 26 5378.535 5477.78 0.995 0.029 0.035
# parameters of interest
params_lcs_openn_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_openn_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("openn_t2 ~ openn_t1", "d_openn_1 =~ openn_t2", "d_openn_1 ~ openn_t1", # change parameters
                           "d_openn_1 ~ frequ", "frequ ~~ frequ", "openn_t1 ~ frequ", # frequency of self improvement
                           "d_openn_1 ~1 ", "openn_t1 ~1 ", "", # means
                           "d_openn_1 ~~ d_openn_1"))
kable(params_lcs_openn_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
openn_t2 ~ openn_t1 1.000 1.000 1.000 1.021 NA NA
d_openn_1 =~ openn_t2 1.000 1.000 1.000 0.407 NA NA
d_openn_1 ~1 0.484 0.220 0.749 2.028 3.586 0.000
openn_t1 ~1 3.564 3.490 3.639 5.955 93.281 0.000
d_openn_1 ~~ d_openn_1 0.051 0.024 0.077 0.892 3.780 0.000
openn_t1 ~ frequ 0.142 0.034 0.249 0.173 2.576 0.010
d_openn_1 ~ openn_t1 -0.115 -0.186 -0.043 -0.287 -3.141 0.002
d_openn_1 ~ frequ 0.071 -0.010 0.153 0.218 1.715 0.086
frequ ~~ frequ 0.533 0.354 0.711 1.000 5.851 0.000

The moderation effect of frequency of self-acceptance behaviors with the openness change score (current-self) is not significantly different from zero, b = 0.071, p = 0.086.

6.7.5 Big Five facets (run models)

Run models for all facets with a template & loop:

Show the code
# create templates:

# 1st, for facet-specific acceptance goal

facet_template_mod_goal_accept <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ ind_goal               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets -> changes in ideal self
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  mod_name = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7")), facet_model_fit))
}  

# loop across 15 facets -> changes in current self
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[5]], item_nrs) # current instead of ideal!
  mod_name = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), template_filled)) # current instead of ideal!
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_specif_hyp7")), facet_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal self ratings)

facet_template_mod_goal_accept_fu <- '
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2
facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)

facet_t3 ~ 1*facet_t2     # This parameter regresses facet_t3 perfectly on facet_t2
d_facet_1 =~ 1*facet_t3   # This defines the latent change score factor as measured perfectly by scores on facet_t3
facet_t3 ~ 0*1            # This line constrains the intercept of facet_t3 to 0
facet_t3 ~~ 0*facet_t3    # This fixes the variance of facet_t3 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t2 ~ 1               # This estimates the intercept of facet_t2 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t2 ~~ facet_t2         # This estimates the variance of facet_t2 
facet_t2 ~ ind_goal               # This estimates the moderation effect on personality at T2
d_facet_1 ~ facet_t2 + ind_goal   # This estimates the self-feedback parameter and the moderation effect on the change score

ind1_t2 ~~ ind1_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind2_t2 ~~ ind2_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind3_t2 ~~ ind3_t3   # This allows residual covariance on indicator X3 across T2 and T3
ind4_t2 ~~ ind4_t3   # This allows residual covariance on indicator X4 across T2 and T3

ind1_t2 ~~ res1*ind1_t2   # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2   # This allows residual variance on indicator X2 at T2
ind3_t2 ~~ res3*ind3_t2   # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2   # This allows residual variance on indicator X4 at T2

ind1_t3 ~~ res1*ind1_t3  # This allows residual variance on indicator X1 at T3 
ind2_t3 ~~ res2*ind2_t3  # This allows residual variance on indicator X2 at T3 
ind3_t3 ~~ res3*ind3_t3  # This allows residual variance on indicator X3 at T3
ind4_t3 ~~ res4*ind4_t3  # This allows residual variance on indicator X4 at T3

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind2_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind3_t3 ~ m3*1     # This estimates the intercept of X3 at T3
ind4_t3 ~ m4*1     # This estimates the intercept of X4 at T3

ind_goal ~~ ind_goal
ind_goal ~ 1
'

# loop across 15 facets -> changes in ideal self (from T2 to T3)
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  mod_name = paste0("sa07_", str_pad(i-5, 2, pad = "0"), "_t1")
  template_filled <- str_replace_all(facet_template_mod_goal_accept_fu, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4],
                                         "ind_goal" = mod_name))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_specif_hyp7_fu")), facet_model_fit))
}  

# 2nd, for frequency of self-acceptance behavior

facet_template_mod_frequ_accept <- '
facet_t1 =~ 1*ind1_t1 + lamb2*ind2_t1 + lamb3*ind3_t1 + lamb4*ind4_t1 # This specifies the measurement model for facet at T1
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2 (with equality constraints)

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

facet_t2 ~ 1*facet_t1     # This parameter regresses facet_t2 perfectly on facet_t1
d_facet_1 =~ 1*facet_t2   # This defines the latent change score factor as measured perfectly by scores on facet_t2
facet_t2 ~ 0*1            # This line constrains the intercept of facet_t2 to 0
facet_t2 ~~ 0*facet_t2    # This fixes the variance of facet_t2 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t1 ~ 1               # This estimates the intercept of facet_t1 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t1 ~~ facet_t1         # This estimates the variance of facet_t1 
facet_t1 ~ frequ               # This estimates the moderation effect on personality at T1
d_facet_1 ~ facet_t1 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t1 ~~ ind1_t2   # This allows residual covariance on indicator X1 across T1 and T2
ind2_t1 ~~ ind2_t2   # This allows residual covariance on indicator X2 across T1 and T2
ind3_t1 ~~ ind3_t2   # This allows residual covariance on indicator X3 across T1 and T2
ind4_t1 ~~ ind4_t2   # This allows residual covariance on indicator X4 across T1 and T2

ind1_t1 ~~ res1*ind1_t1   # This allows residual variance on indicator X1 at T1 
ind2_t1 ~~ res2*ind2_t1   # This allows residual variance on indicator X2 at T1
ind3_t1 ~~ res3*ind3_t1   # This allows residual variance on indicator X3 at T1
ind4_t1 ~~ res4*ind4_t1   # This allows residual variance on indicator X4 at T1

ind1_t2 ~~ res1*ind1_t2  # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2  # This allows residual variance on indicator X2 at T2 
ind3_t2 ~~ res3*ind3_t2  # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2  # This allows residual variance on indicator X4 at T2

ind1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
ind2_t1 ~ m2*1     # This estimates the intercept of X2 at T1
ind3_t1 ~ m3*1     # This estimates the intercept of X3 at T1
ind4_t1 ~ m4*1     # This estimates the intercept of X4 at T1

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 15 facets -> changes in ideal self
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7")), facet_model_fit))
}  

# loop across 15 facets -> changes in current self
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[5]], item_nrs) # current instead of ideal!
  template_filled <- str_replace_all(facet_template_mod_frequ_accept, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), template_filled)) # current instead of ideal!
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[5], 6), "_frequ_hyp7")), facet_model_fit))
}  

# we also need separate models for follow-up (fu), that is, changes from T2 to T3 (only for ideal self ratings)

facet_template_mod_frequ_accept_fu <- '
facet_t2 =~ 1*ind1_t2 + lamb2*ind2_t2 + lamb3*ind3_t2 + lamb4*ind4_t2 # This specifies the measurement model for facet at T2
facet_t3 =~ 1*ind1_t3 + lamb2*ind2_t3 + lamb3*ind3_t3 + lamb4*ind4_t3 # This specifies the measurement model for facet at T3 (with equality constraints)

frequ =~ 1*sa04_01_t2 + sa04_02_t2 + sa04_03_t2 # latent variable for moderator

facet_t3 ~ 1*facet_t2     # This parameter regresses facet_t3 perfectly on facet_t2
d_facet_1 =~ 1*facet_t3   # This defines the latent change score factor as measured perfectly by scores on facet_t3
facet_t3 ~ 0*1            # This line constrains the intercept of facet_t3 to 0
facet_t3 ~~ 0*facet_t3    # This fixes the variance of facet_t3 to 0

d_facet_1 ~ 1              # This estimates the intercept of the change score 
facet_t2 ~ 1               # This estimates the intercept of facet_t2 
d_facet_1 ~~ d_facet_1     # This estimates the variance of the change scores 
facet_t2 ~~ facet_t2         # This estimates the variance of facet_t2 
facet_t2 ~ frequ               # This estimates the moderation effect on personality at T2
d_facet_1 ~ facet_t2 + frequ   # This estimates the self-feedback parameter and the moderation effect on the change score

frequ ~ 0*1          # This fixes the intercept of the moderator to 0
frequ ~~ frequ         # This estimates the variance of the moderator

ind1_t2 ~~ ind1_t3   # This allows residual covariance on indicator X1 across T2 and T3
ind2_t2 ~~ ind2_t3   # This allows residual covariance on indicator X2 across T2 and T3
ind3_t2 ~~ ind3_t3   # This allows residual covariance on indicator X3 across T2 and T3
ind4_t2 ~~ ind4_t3   # This allows residual covariance on indicator X4 across T2 and T3

ind1_t2 ~~ res1*ind1_t2   # This allows residual variance on indicator X1 at T2 
ind2_t2 ~~ res2*ind2_t2   # This allows residual variance on indicator X2 at T2
ind3_t2 ~~ res3*ind3_t2   # This allows residual variance on indicator X3 at T2
ind4_t2 ~~ res4*ind4_t2   # This allows residual variance on indicator X4 at T2

ind1_t3 ~~ res1*ind1_t3  # This allows residual variance on indicator X1 at T3 
ind2_t3 ~~ res2*ind2_t3  # This allows residual variance on indicator X2 at T3 
ind3_t3 ~~ res3*ind3_t3  # This allows residual variance on indicator X3 at T3
ind4_t3 ~~ res4*ind4_t3  # This allows residual variance on indicator X4 at T3

ind1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
ind2_t2 ~ m2*1     # This estimates the intercept of X2 at T2
ind3_t2 ~ m3*1     # This estimates the intercept of X3 at T2
ind4_t2 ~ m4*1     # This estimates the intercept of X4 at T2

ind1_t3 ~ 0*1      # This constrains the intercept of X1 to 0 at T3
ind2_t3 ~ m2*1     # This estimates the intercept of X2 at T3
ind3_t3 ~ m3*1     # This estimates the intercept of X3 at T3
ind4_t3 ~ m4*1     # This estimates the intercept of X4 at T3

sa04_01_t2 ~~ sa04_01_t2
sa04_02_t2 ~~ sa04_02_t2
sa04_03_t2 ~~ sa04_03_t2

sa04_01_t2 ~ 1
sa04_02_t2 ~ 1
sa04_03_t2 ~ 1
'

# loop across 15 facets -> changes in ideal self
for (i in 6:length(b5_vars)) {
  item_nrs = b5_vars[[i]][[1]]
  short_name = str_trunc(names(b5_vars)[i], 5, ellipsis = "")
  # use BFI version combined pre&post ideal
  items = paste0(bfi_versions[[6]], item_nrs)
  template_filled <- str_replace_all(facet_template_mod_frequ_accept_fu, 
                                       c("facet" = short_name,
                                         "ind1" = items[1], "ind2" = items[2], "ind3" = items[3], "ind4" = items[4]))
  facet_model_fit <- lavaan(template_filled, data=df_sbsa2_wide_pers_sa_mod_fu, estimator='mlr', fixed.x=FALSE, missing='fiml')
  eval(call("<-", as.name(paste0("mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), template_filled))
  eval(call("<-", as.name(paste0("fit_mi_lcs_", short_name, "_", 
                                     str_sub(names(bfi_versions)[6], 6), "_frequ_hyp7_fu")), facet_model_fit))
} 

6.7.6 Big Five facets (ideal self)

6.7.6.1 Sociability - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8062.214 8150.007 0.933 0.048 0.055
# parameters of interest
params_lcs_socia_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", "d_socia_1 ~ sa07_01_t1", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.894 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.483 NA NA
d_socia_1 ~1 0.060 -1.017 1.137 0.314 0.109 0.913
socia_t1 ~1 4.078 3.886 4.271 11.548 41.478 0.000
d_socia_1 ~~ d_socia_1 0.032 -0.025 0.089 0.883 1.108 0.268
d_socia_1 ~ socia_t1 0.010 -0.251 0.271 0.019 0.076 0.939
d_socia_1 ~ sa07_01_t1 -0.049 -0.096 -0.001 -0.344 -2.013 0.044
sa07_01_t1 ~~ sa07_01_t1 1.826 1.634 2.019 1.000 18.622 0.000

The moderation effect of the facet-specific acceptance goal with the sociability change score (ideal-self) is not significantly different from zero (at p < .001), b = -0.049, p = 0.044.

6.7.6.2 Sociability - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9292.668 9407.182 0.938 0.049 0.057
# parameters of interest
params_lcs_socia_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_socia_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 0.895 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.488 NA NA
d_socia_1 ~1 0.001 -1.133 1.135 0.003 0.001 0.999
socia_t1 ~1 4.226 4.145 4.307 11.987 102.547 0.000
d_socia_1 ~~ d_socia_1 0.037 -0.021 0.094 0.992 1.251 0.211
socia_t1 ~ frequ 0.112 0.005 0.219 0.235 2.052 0.040
d_socia_1 ~ socia_t1 -0.015 -0.279 0.249 -0.027 -0.109 0.913
d_socia_1 ~ frequ -0.021 -0.118 0.077 -0.080 -0.415 0.678
frequ ~~ frequ 0.549 0.370 0.728 1.000 6.007 0.000

The moderation effect of the frequency of self-acceptance behaviors with sociability change score (ideal-self) is not significantly different from zero, b = -0.021, p = 0.678.

6.7.6.3 Assertiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7980.554 8068.348 1 0 0.04
# parameters of interest
params_lcs_asser_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", "d_asser_1 ~ sa07_02_t1", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.922 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.420 NA NA
d_asser_1 ~1 0.004 -0.946 0.954 0.023 0.008 0.994
asser_t1 ~1 4.025 3.846 4.204 11.191 44.069 0.000
d_asser_1 ~~ d_asser_1 0.026 -0.013 0.065 0.961 1.296 0.195
d_asser_1 ~ asser_t1 -0.026 -0.252 0.199 -0.058 -0.228 0.820
d_asser_1 ~ sa07_02_t1 0.024 -0.013 0.062 0.196 1.262 0.207
sa07_02_t1 ~~ sa07_02_t1 1.747 1.573 1.921 1.000 19.717 0.000

The moderation effect of the facet-specific acceptance goal with the assertiveness change score (ideal-self) is not significantly different from zero, b = 0.024, p = 0.207.

6.7.6.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9217.907 9332.42 1 0 0.041
# parameters of interest
params_lcs_asser_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_asser_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.922 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.419 NA NA
d_asser_1 ~1 0.015 -1.001 1.030 0.089 0.029 0.977
asser_t1 ~1 4.134 4.044 4.225 11.256 89.400 0.000
d_asser_1 ~~ d_asser_1 0.028 -0.014 0.069 0.997 1.311 0.190
asser_t1 ~ frequ 0.147 0.045 0.250 0.297 2.812 0.005
d_asser_1 ~ asser_t1 -0.010 -0.251 0.232 -0.022 -0.080 0.936
d_asser_1 ~ frequ -0.009 -0.094 0.077 -0.039 -0.203 0.839
frequ ~~ frequ 0.550 0.374 0.726 1.000 6.127 0.000

The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score (ideal-self) is not significantly different from zero, b = -0.009, p = 0.839.

6.7.6.5 Energy - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7715.501 7803.294 0.92 0.049 0.056
# parameters of interest
params_lcs_energ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", "d_energ_1 ~ sa07_03_t1", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.001 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.769 NA NA
d_energ_1 ~1 0.668 0.266 1.071 4.147 3.253 0.001
energ_t1 ~1 2.257 2.120 2.393 10.747 32.461 0.000
d_energ_1 ~~ d_energ_1 0.022 -0.016 0.060 0.851 1.131 0.258
d_energ_1 ~ energ_t1 -0.297 -0.481 -0.113 -0.387 -3.167 0.002
d_energ_1 ~ sa07_03_t1 -0.002 -0.021 0.017 -0.016 -0.203 0.839
sa07_03_t1 ~~ sa07_03_t1 1.851 1.650 2.052 1.000 18.028 0.000

The moderation effect of the facet-specific acceptance goal with the energy change score (ideal-self) is not significantly different from zero, b = -0.002, p = 0.839.

6.7.6.6 Energy - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8918.395 9032.908 0.943 0.046 0.056
# parameters of interest
params_lcs_energ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_energ_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.014 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.763 NA NA
d_energ_1 ~1 0.797 0.355 1.238 4.548 3.537 0.000
energ_t1 ~1 2.222 2.106 2.339 9.538 37.289 0.000
d_energ_1 ~~ d_energ_1 0.024 -0.007 0.055 0.788 1.518 0.129
energ_t1 ~ frequ -0.105 -0.188 -0.021 -0.327 -2.457 0.014
d_energ_1 ~ energ_t1 -0.359 -0.559 -0.159 -0.477 -3.518 0.000
d_energ_1 ~ frequ -0.060 -0.125 0.004 -0.252 -1.836 0.066
frequ ~~ frequ 0.532 0.354 0.710 1.000 5.855 0.000

The moderation effect of the frequency of self-acceptance behaviors with the energy change score (ideal-self) is not significantly different from zero, b = -0.06, p = 0.066.

6.7.6.7 Compassion - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8341.376 8429.169 0.96 0.041 0.047
# parameters of interest
params_lcs_compa_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", "d_compa_1 ~ sa07_04_t1", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.017 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.601 NA NA
d_compa_1 ~1 0.876 -0.087 1.838 2.470 1.783 0.075
compa_t1 ~1 4.489 4.329 4.648 7.476 55.172 0.000
d_compa_1 ~~ d_compa_1 0.112 0.019 0.206 0.894 2.362 0.018
d_compa_1 ~ compa_t1 -0.195 -0.401 0.011 -0.331 -1.858 0.063
d_compa_1 ~ sa07_04_t1 -0.009 -0.068 0.051 -0.035 -0.287 0.774
sa07_04_t1 ~~ sa07_04_t1 2.024 1.813 2.235 1.000 18.799 0.000

The moderation effect of the facet-specific acceptance goal with the compassion change score (ideal-self) is not significantly different from zero, b = -0.009, p = 0.774.

6.7.6.8 Compassion - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9539.194 9653.708 0.975 0.033 0.043
# parameters of interest
params_lcs_compa_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_compa_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 1.016 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.604 NA NA
d_compa_1 ~1 0.869 -0.035 1.773 2.351 1.885 0.059
compa_t1 ~1 4.291 4.196 4.385 6.900 88.970 0.000
d_compa_1 ~~ d_compa_1 0.122 0.022 0.222 0.892 2.386 0.017
compa_t1 ~ frequ 0.142 -0.015 0.299 0.168 1.773 0.076
d_compa_1 ~ compa_t1 -0.198 -0.402 0.005 -0.333 -1.908 0.056
d_compa_1 ~ frequ 0.028 -0.098 0.153 0.055 0.433 0.665
frequ ~~ frequ 0.544 0.365 0.724 1.000 5.935 0.000

The moderation effect of the frequency of self-acceptance behaviors with the compassion change score (ideal-self) is not significantly different from zero, b = 0.028, p = 0.665.

6.7.6.9 Respectfulness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 6475.254 6563.048 0.911 0.077 0.061
# parameters of interest
params_lcs_respe_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", "d_respe_1 ~ sa07_05_t1", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.999 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.391 NA NA
d_respe_1 ~1 0.380 -0.449 1.209 2.533 0.899 0.369
respe_t1 ~1 4.709 4.615 4.803 12.287 98.463 0.000
d_respe_1 ~~ d_respe_1 0.022 -0.004 0.047 0.959 1.658 0.097
d_respe_1 ~ respe_t1 -0.079 -0.250 0.092 -0.202 -0.909 0.363
d_respe_1 ~ sa07_05_t1 -0.007 -0.043 0.028 -0.066 -0.412 0.680
sa07_05_t1 ~~ sa07_05_t1 1.744 1.473 2.015 1.000 12.613 0.000

The moderation effect of the facet-specific acceptance goal with the respectfulness change score (ideal-self) is not significantly different from zero, b = -0.007, p = 0.68.

6.7.6.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 7710.582 7825.096 0.967 0.044 0.045
# parameters of interest
params_lcs_respe_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respe_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.997 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.389 NA NA
d_respe_1 ~1 0.429 -0.404 1.263 2.916 1.010 0.313
respe_t1 ~1 4.625 4.560 4.690 12.266 139.842 0.000
d_respe_1 ~~ d_respe_1 0.020 -0.004 0.044 0.922 1.663 0.096
respe_t1 ~ frequ 0.121 0.038 0.203 0.236 2.862 0.004
d_respe_1 ~ respe_t1 -0.093 -0.269 0.083 -0.238 -1.039 0.299
d_respe_1 ~ frequ 0.043 -0.026 0.111 0.213 1.223 0.221
frequ ~~ frequ 0.545 0.367 0.723 1.000 5.998 0.000

The moderation effect of the frequency of self-acceptance behaviors with respectfulness change score (ideal-self) is not significantly different from zero, b = 0.043, p = 0.221.

6.7.6.11 Trust - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8054.899 8142.692 0.965 0.039 0.043
# parameters of interest
params_lcs_trust_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", "d_trust_1 ~ sa07_06_t1", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.106 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.594 NA NA
d_trust_1 ~1 0.475 0.175 0.774 1.731 3.103 0.002
trust_t1 ~1 1.967 1.795 2.140 3.858 22.330 0.000
d_trust_1 ~~ d_trust_1 0.060 0.002 0.119 0.805 2.015 0.044
d_trust_1 ~ trust_t1 -0.236 -0.383 -0.090 -0.440 -3.168 0.002
d_trust_1 ~ sa07_06_t1 -0.011 -0.053 0.031 -0.057 -0.531 0.595
sa07_06_t1 ~~ sa07_06_t1 1.909 1.711 2.108 1.000 18.829 0.000

The moderation effect of the facet-specific acceptance goal with the trust change score (ideal-self) is not significantly different from zero, b = -0.011, p = 0.595.

6.7.6.12 Trust - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9255.534 9370.047 0.967 0.039 0.048
# parameters of interest
params_lcs_trust_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_trust_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.107 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.604 NA NA
d_trust_1 ~1 0.508 0.211 0.805 1.857 3.352 0.001
trust_t1 ~1 1.946 1.847 2.045 3.878 38.594 0.000
d_trust_1 ~~ d_trust_1 0.055 -0.002 0.113 0.739 1.896 0.058
trust_t1 ~ frequ -0.134 -0.263 -0.005 -0.197 -2.032 0.042
d_trust_1 ~ trust_t1 -0.269 -0.424 -0.113 -0.493 -3.390 0.001
d_trust_1 ~ frequ -0.097 -0.191 -0.003 -0.262 -2.030 0.042
frequ ~~ frequ 0.546 0.366 0.725 1.000 5.954 0.000

The moderation effect of the frequency of self-acceptance behaviors with the trust change score (ideal-self) is not significantly different from zero (at p < .001), b = -0.097, p = 0.042.

6.7.6.13 Organization - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7010.137 7097.93 0.978 0.029 0.045
# parameters of interest
params_lcs_organ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", "d_organ_1 ~ sa07_07_t1", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.972 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.604 NA NA
d_organ_1 ~1 0.219 -0.141 0.579 0.829 1.191 0.234
organ_t1 ~1 1.724 1.558 1.890 4.061 20.374 0.000
d_organ_1 ~~ d_organ_1 0.064 0.013 0.115 0.916 2.460 0.014
d_organ_1 ~ organ_t1 -0.166 -0.395 0.063 -0.267 -1.420 0.156
d_organ_1 ~ sa07_07_t1 0.022 -0.018 0.062 0.120 1.085 0.278
sa07_07_t1 ~~ sa07_07_t1 2.070 1.888 2.251 1.000 22.344 0.000

The moderation effect of the facet-specific acceptance goal with the organization change score (ideal-self) is not significantly different from zero, b = 0.022, p = 0.278.

6.7.6.14 Organization - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8190.663 8305.176 0.992 0.017 0.043
# parameters of interest
params_lcs_organ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_organ_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 0.970 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.605 NA NA
d_organ_1 ~1 0.296 -0.111 0.702 1.130 1.426 0.154
organ_t1 ~1 1.754 1.651 1.857 4.180 33.482 0.000
d_organ_1 ~~ d_organ_1 0.063 0.012 0.115 0.927 2.423 0.015
organ_t1 ~ frequ -0.116 -0.231 -0.001 -0.205 -1.986 0.047
d_organ_1 ~ organ_t1 -0.171 -0.415 0.072 -0.275 -1.381 0.167
d_organ_1 ~ frequ -0.023 -0.120 0.074 -0.065 -0.466 0.641
frequ ~~ frequ 0.545 0.366 0.723 1.000 5.982 0.000

The moderation effect of the frequency of self-acceptance behaviors with the organization change score (ideal-self) is not significantly different from zero, b = -0.023, p = 0.641.

6.7.6.15 Productiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 6374.471 6462.264 0.909 0.069 0.066
# parameters of interest
params_lcs_produ_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", "d_produ_1 ~ sa07_08_t1", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.046 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.676 NA NA
d_produ_1 ~1 0.285 0.024 0.545 1.193 2.141 0.032
produ_t1 ~1 1.576 1.436 1.715 4.265 22.137 0.000
d_produ_1 ~~ d_produ_1 0.047 0.009 0.085 0.825 2.405 0.016
d_produ_1 ~ produ_t1 -0.253 -0.425 -0.080 -0.391 -2.867 0.004
d_produ_1 ~ sa07_08_t1 0.026 -0.004 0.056 0.150 1.688 0.091
sa07_08_t1 ~~ sa07_08_t1 1.880 1.691 2.069 1.000 19.477 0.000

The moderation effect of the facet-specific acceptance goal with the productiveness change score (ideal-self) is not significantly different from zero, b = 0.026, p = 0.091.

6.7.6.16 Productiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 7584.382 7698.896 0.922 0.064 0.064
# parameters of interest
params_lcs_produ_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_produ_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 1.042 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.675 NA NA
d_produ_1 ~1 0.397 0.143 0.651 1.656 3.068 0.002
produ_t1 ~1 1.585 1.507 1.663 4.281 39.888 0.000
d_produ_1 ~~ d_produ_1 0.045 0.008 0.082 0.782 2.367 0.018
produ_t1 ~ frequ -0.060 -0.144 0.025 -0.117 -1.377 0.168
d_produ_1 ~ produ_t1 -0.269 -0.440 -0.098 -0.416 -3.088 0.002
d_produ_1 ~ frequ -0.088 -0.156 -0.020 -0.267 -2.540 0.011
frequ ~~ frequ 0.532 0.355 0.710 1.000 5.875 0.000

The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score (ideal-self) is not significantly different from zero (at p < .001), b = -0.088, p = 0.011.

6.7.6.17 Responsibility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7227.03 7314.824 0.959 0.047 0.051
# parameters of interest
params_lcs_respo_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", "d_respo_1 ~ sa07_09_t1", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 0.912 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.623 NA NA
d_respo_1 ~1 0.669 -0.246 1.584 2.523 1.433 0.152
respo_t1 ~1 4.294 4.156 4.433 11.063 60.742 0.000
d_respo_1 ~~ d_respo_1 0.066 0.015 0.118 0.946 2.524 0.012
d_respo_1 ~ respo_t1 -0.140 -0.349 0.070 -0.204 -1.306 0.191
d_respo_1 ~ sa07_09_t1 -0.024 -0.058 0.011 -0.129 -1.346 0.178
sa07_09_t1 ~~ sa07_09_t1 2.069 1.860 2.278 1.000 19.415 0.000

The moderation effect of the facet-specific acceptance goal with the responsibility change score (ideal-self) is not significantly different from zero, b = -0.024, p = 0.178.

6.7.6.18 Responsibility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8408.147 8522.66 0.972 0.038 0.049
# parameters of interest
params_lcs_respo_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respo_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 0.912 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.626 NA NA
d_respo_1 ~1 0.685 -0.220 1.590 2.524 1.483 0.138
respo_t1 ~1 4.239 4.135 4.343 10.726 80.005 0.000
d_respo_1 ~~ d_respo_1 0.067 0.016 0.119 0.916 2.566 0.010
respo_t1 ~ frequ 0.084 -0.021 0.189 0.156 1.568 0.117
d_respo_1 ~ respo_t1 -0.157 -0.365 0.051 -0.229 -1.483 0.138
d_respo_1 ~ frequ 0.080 0.002 0.159 0.217 1.999 0.046
frequ ~~ frequ 0.541 0.361 0.720 1.000 5.904 0.000

The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score (ideal-self) is not significantly different from zero (at p < .001), b = 0.08, p = 0.046.

6.7.6.19 Anxiety - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7999.913 8087.706 0.922 0.05 0.059
# parameters of interest
params_lcs_anxie_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", "d_anxie_1 ~ sa07_10_t1", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.180 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.730 NA NA
d_anxie_1 ~1 1.543 0.480 2.607 6.100 2.844 0.004
anxie_t1 ~1 4.554 4.405 4.703 11.143 59.850 0.000
d_anxie_1 ~~ d_anxie_1 0.045 0.005 0.086 0.711 2.210 0.027
d_anxie_1 ~ anxie_t1 -0.333 -0.557 -0.109 -0.538 -2.912 0.004
d_anxie_1 ~ sa07_10_t1 -0.005 -0.037 0.027 -0.028 -0.302 0.762
sa07_10_t1 ~~ sa07_10_t1 2.115 1.921 2.308 1.000 21.431 0.000

The moderation effect of the facet-specific acceptance goal with the anxiety change score (ideal-self) is not significantly different from zero, b = -0.005, p = 0.762.

6.7.6.20 Anxiety - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9172.921 9287.434 0.969 0.034 0.05
# parameters of interest
params_lcs_anxie_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_anxie_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 1.183 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.726 NA NA
d_anxie_1 ~1 1.460 0.384 2.536 5.662 2.659 0.008
anxie_t1 ~1 4.530 4.450 4.609 10.777 111.419 0.000
d_anxie_1 ~~ d_anxie_1 0.047 0.004 0.089 0.700 2.152 0.031
anxie_t1 ~ frequ 0.120 0.010 0.231 0.213 2.144 0.032
d_anxie_1 ~ anxie_t1 -0.318 -0.550 -0.085 -0.518 -2.680 0.007
d_anxie_1 ~ frequ -0.034 -0.118 0.049 -0.099 -0.809 0.418
frequ ~~ frequ 0.554 0.373 0.734 1.000 6.014 0.000

The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score (ideal-self) is not significantly different from zero, b = -0.034, p = 0.418.

6.7.6.21 Depression - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 6424.347 6512.141 0.94 0.055 0.052
# parameters of interest
params_lcs_depre_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", "d_depre_1 ~ sa07_11_t1", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.157 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.700 NA NA
d_depre_1 ~1 1.393 0.638 2.147 5.262 3.616 0.000
depre_t1 ~1 4.440 4.302 4.578 10.146 63.122 0.000
d_depre_1 ~~ d_depre_1 0.052 0.011 0.093 0.738 2.468 0.014
d_depre_1 ~ depre_t1 -0.309 -0.471 -0.147 -0.511 -3.741 0.000
d_depre_1 ~ sa07_11_t1 -0.004 -0.033 0.026 -0.022 -0.264 0.792
sa07_11_t1 ~~ sa07_11_t1 2.106 1.918 2.294 1.000 21.989 0.000

The moderation effect of the facet-specific acceptance goal with the depression change score (ideal-self) is not significantly different from zero, b = -0.004, p = 0.792.

6.7.6.22 Depression - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 7599.7 7714.213 0.944 0.053 0.057
# parameters of interest
params_lcs_depre_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_depre_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 1.156 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.700 NA NA
d_depre_1 ~1 1.382 0.644 2.121 5.108 3.668 0.000
depre_t1 ~1 4.443 4.368 4.519 9.939 115.332 0.000
d_depre_1 ~~ d_depre_1 0.054 0.011 0.097 0.740 2.451 0.014
depre_t1 ~ frequ 0.109 -0.004 0.222 0.180 1.895 0.058
d_depre_1 ~ depre_t1 -0.310 -0.472 -0.148 -0.512 -3.750 0.000
d_depre_1 ~ frequ 0.003 -0.067 0.073 0.008 0.082 0.935
frequ ~~ frequ 0.543 0.363 0.723 1.000 5.924 0.000

The moderation effect of the frequency of self-acceptance behaviors with the depression change score (ideal-self) is not significantly different from zero, b = 0.003, p = 0.935.

6.7.6.23 Volatility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7401.116 7488.909 0.954 0.042 0.051
# parameters of interest
params_lcs_volat_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", "d_volat_1 ~ sa07_12_t1", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.020 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.570 NA NA
d_volat_1 ~1 0.330 -0.017 0.677 1.298 1.867 0.062
volat_t1 ~1 1.425 1.288 1.561 3.128 20.433 0.000
d_volat_1 ~~ d_volat_1 0.057 0.002 0.112 0.879 2.015 0.044
d_volat_1 ~ volat_t1 -0.156 -0.380 0.068 -0.279 -1.367 0.172
d_volat_1 ~ sa07_12_t1 -0.030 -0.070 0.010 -0.152 -1.455 0.146
sa07_12_t1 ~~ sa07_12_t1 1.709 1.531 1.887 1.000 18.847 0.000

The moderation effect of the facet-specific acceptance goal with the volatility change score (ideal-self) is not significantly different from zero, b = -0.03, p = 0.146.

6.7.6.24 Volatility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8655.333 8769.846 0.96 0.041 0.051
# parameters of interest
params_lcs_volat_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_volat_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.013 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.565 NA NA
d_volat_1 ~1 0.293 -0.061 0.646 1.140 1.623 0.105
volat_t1 ~1 1.646 1.566 1.726 3.576 40.293 0.000
d_volat_1 ~~ d_volat_1 0.058 0.002 0.115 0.887 2.041 0.041
volat_t1 ~ frequ -0.110 -0.234 0.013 -0.176 -1.747 0.081
d_volat_1 ~ volat_t1 -0.183 -0.412 0.046 -0.328 -1.565 0.118
d_volat_1 ~ frequ -0.052 -0.153 0.050 -0.148 -0.999 0.318
frequ ~~ frequ 0.543 0.365 0.722 1.000 5.956 0.000

The moderation effect of the frequency of self-acceptance behaviors with the volatility change score (ideal-self) is significantly different from zero, b = -0.052, p = 0.318.

6.7.6.25 Curiosity - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7804.168 7891.962 0.972 0.035 0.05
# parameters of interest
params_lcs_curio_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", "d_curio_1 ~ sa07_13_t1", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.085 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.547 NA NA
d_curio_1 ~1 0.885 0.088 1.683 4.194 2.177 0.029
curio_t1 ~1 4.653 4.529 4.777 11.116 73.271 0.000
d_curio_1 ~~ d_curio_1 0.037 -0.004 0.079 0.838 1.756 0.079
d_curio_1 ~ curio_t1 -0.198 -0.364 -0.031 -0.392 -2.328 0.020
d_curio_1 ~ sa07_13_t1 0.006 -0.030 0.042 0.035 0.309 0.757
sa07_13_t1 ~~ sa07_13_t1 1.724 1.530 1.918 1.000 17.438 0.000

The moderation effect of the facet-specific acceptance goal with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.006, p = 0.757.

6.7.6.26 Curiosity - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9065.942 9180.456 0.983 0.027 0.049
# parameters of interest
params_lcs_curio_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_curio_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.084 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 0.543 NA NA
d_curio_1 ~1 0.914 0.203 1.626 4.446 2.518 0.012
curio_t1 ~1 4.458 4.383 4.533 10.853 116.407 0.000
d_curio_1 ~~ d_curio_1 0.035 -0.005 0.075 0.830 1.725 0.084
curio_t1 ~ frequ 0.019 -0.083 0.121 0.035 0.369 0.712
d_curio_1 ~ curio_t1 -0.201 -0.358 -0.045 -0.402 -2.527 0.012
d_curio_1 ~ frequ 0.029 -0.040 0.098 0.104 0.817 0.414
frequ ~~ frequ 0.549 0.370 0.728 1.000 6.009 0.000

The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score (ideal-self) is not significantly different from zero, b = 0.029, p = 0.414.

6.7.6.27 Aesthetic - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7878.706 7966.499 0.97 0.044 0.044
# parameters of interest
params_lcs_aesth_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", "d_aesth_1 ~ sa07_14_t1", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.972 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.609 NA NA
d_aesth_1 ~1 0.468 0.008 0.928 2.754 1.993 0.046
aesth_t1 ~1 2.767 2.576 2.958 10.206 28.434 0.000
d_aesth_1 ~~ d_aesth_1 0.027 0.000 0.054 0.928 1.926 0.054
d_aesth_1 ~ aesth_t1 -0.172 -0.339 -0.005 -0.274 -2.020 0.043
d_aesth_1 ~ sa07_14_t1 0.004 -0.015 0.023 0.033 0.413 0.679
sa07_14_t1 ~~ sa07_14_t1 2.002 1.823 2.180 1.000 21.957 0.000

The moderation effect of the facet-specific acceptance goal with the aesthetic change score (ideal-self) is not significantly different from zero, b = 0.004, p = 0.679.

6.7.6.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9077.014 9191.528 0.979 0.035 0.047
# parameters of interest
params_lcs_aesth_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_aesth_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.969 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.609 NA NA
d_aesth_1 ~1 0.542 0.072 1.011 3.330 2.261 0.024
aesth_t1 ~1 2.903 2.767 3.038 11.217 42.031 0.000
d_aesth_1 ~~ d_aesth_1 0.024 -0.001 0.049 0.904 1.845 0.065
aesth_t1 ~ frequ -0.091 -0.159 -0.024 -0.260 -2.663 0.008
d_aesth_1 ~ aesth_t1 -0.193 -0.358 -0.028 -0.307 -2.296 0.022
d_aesth_1 ~ frequ -0.038 -0.095 0.019 -0.170 -1.300 0.194
frequ ~~ frequ 0.540 0.362 0.718 1.000 5.940 0.000

The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score (ideal-self) is not significantly different from zero, b = -0.038, p = 0.194.

6.7.6.29 Imagination - specific, facet-level acceptance goal as moderator of change

Results summary (*sa07_$$_t1* = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7447.667 7535.461 0.908 0.07 0.06
# parameters of interest
params_lcs_imagi_ideal_specif_hyp7 <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", "d_imagi_1 ~ sa07_15_t1", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.047 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.654 NA NA
d_imagi_1 ~1 1.207 0.315 2.100 3.643 2.651 0.008
imagi_t1 ~1 4.711 4.573 4.848 8.880 67.101 0.000
d_imagi_1 ~~ d_imagi_1 0.092 0.030 0.154 0.840 2.923 0.003
d_imagi_1 ~ imagi_t1 -0.251 -0.437 -0.065 -0.402 -2.642 0.008
d_imagi_1 ~ sa07_15_t1 -0.027 -0.067 0.013 -0.119 -1.327 0.184
sa07_15_t1 ~~ sa07_15_t1 2.135 1.956 2.314 1.000 23.329 0.000

The moderation effect of the facet-specific acceptance goal with the imagination change score (ideal-self) is not significantly different from zero, b = -0.027, p = 0.184.

6.7.6.30 Imagination - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8627.828 8742.342 0.966 0.041 0.048
# parameters of interest
params_lcs_imagi_ideal_frequ_hyp7 <- broom::tidy(fit_mi_lcs_imagi_ideal_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.042 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.651 NA NA
d_imagi_1 ~1 1.054 0.170 1.938 3.204 2.337 0.019
imagi_t1 ~1 4.545 4.468 4.622 8.635 115.719 0.000
d_imagi_1 ~~ d_imagi_1 0.093 0.031 0.155 0.859 2.922 0.003
imagi_t1 ~ frequ 0.124 0.024 0.223 0.173 2.439 0.015
d_imagi_1 ~ imagi_t1 -0.234 -0.424 -0.045 -0.375 -2.422 0.015
d_imagi_1 ~ frequ 0.000 -0.098 0.098 -0.001 -0.005 0.996
frequ ~~ frequ 0.544 0.366 0.723 1.000 5.977 0.000

The moderation effect of the frequency of self-acceptance behaviors with the imagination change score (ideal-self) is not significantly different from zero, b = 0, p = 0.996.

6.7.7 Big Five facets (ideal self - follow-up T3)

6.7.7.1 Sociability - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6874.112 6958.038 0.953 0.048 0.058
# parameters of interest
params_lcs_socia_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_socia_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t3 ~ socia_t2", "d_socia_1 =~ socia_t3", "d_socia_1 ~ socia_t2", # change parameters
                     "d_socia_1 ~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", "d_socia_1 ~ sa07_01_t1", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t2 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t3 ~ socia_t2 1.000 1.000 1.000 1.051 NA NA
d_socia_1 =~ socia_t3 1.000 1.000 1.000 0.624 NA NA
d_socia_1 ~1 0.863 -0.028 1.755 3.696 1.899 0.058
socia_t2 ~1 4.173 4.002 4.343 10.603 48.009 0.000
d_socia_1 ~~ d_socia_1 0.046 0.004 0.089 0.845 2.121 0.034
d_socia_1 ~ socia_t2 -0.222 -0.427 -0.017 -0.374 -2.125 0.034
d_socia_1 ~ sa07_01_t1 0.019 -0.016 0.055 0.116 1.088 0.277
sa07_01_t1 ~~ sa07_01_t1 1.925 1.713 2.137 1.000 17.799 0.000

The moderation effect of the facet-specific acceptance goal with the sociability change score from T2 to T3 (ideal-self) is not significantly different from zero (at p < .001), b = 0.019, p = 0.277.

6.7.7.2 Sociability - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8264.175 8373.644 0.94 0.056 0.059
# parameters of interest
params_lcs_socia_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_socia_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t3 ~ socia_t2", "d_socia_1 =~ socia_t3", "d_socia_1 ~ socia_t2", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t2 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t2 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t3 ~ socia_t2 1.000 1.000 1.000 1.049 NA NA
d_socia_1 =~ socia_t3 1.000 1.000 1.000 0.619 NA NA
d_socia_1 ~1 0.934 0.008 1.860 3.961 1.976 0.048
socia_t2 ~1 4.159 4.065 4.253 10.403 86.649 0.000
d_socia_1 ~~ d_socia_1 0.048 0.004 0.092 0.859 2.123 0.034
socia_t2 ~ frequ 0.081 -0.030 0.191 0.149 1.433 0.152
d_socia_1 ~ socia_t2 -0.224 -0.439 -0.008 -0.379 -2.037 0.042
d_socia_1 ~ frequ 0.014 -0.072 0.101 0.046 0.329 0.742
frequ ~~ frequ 0.550 0.371 0.729 1.000 6.036 0.000

The moderation effect of the frequency of self-acceptance behaviors with sociability change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.014, p = 0.742.

6.7.7.3 Assertiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6957.508 7041.434 0.987 0.023 0.047
# parameters of interest
params_lcs_asser_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_asser_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t3 ~ asser_t2", "d_asser_1 =~ asser_t3", "d_asser_1 ~ asser_t2", # change parameters
                     "d_asser_1 ~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", "d_asser_1 ~ sa07_02_t1", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t2 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t3 ~ asser_t2 1.000 1.000 1.000 1.054 NA NA
d_asser_1 =~ asser_t3 1.000 1.000 1.000 0.797 NA NA
d_asser_1 ~1 1.356 0.633 2.080 4.579 3.674 0.000
asser_t2 ~1 3.930 3.705 4.154 10.032 34.272 0.000
d_asser_1 ~~ d_asser_1 0.070 0.022 0.119 0.800 2.837 0.005
d_asser_1 ~ asser_t2 -0.342 -0.519 -0.166 -0.453 -3.798 0.000
d_asser_1 ~ sa07_02_t1 0.010 -0.032 0.052 0.046 0.484 0.628
sa07_02_t1 ~~ sa07_02_t1 1.767 1.578 1.955 1.000 18.385 0.000

The moderation effect of the facet-specific acceptance goal with the assertiveness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.01, p = 0.628.

6.7.7.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8372.446 8481.915 1 0 0.044
# parameters of interest
params_lcs_asser_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_asser_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t3 ~ asser_t2", "d_asser_1 =~ asser_t3", "d_asser_1 ~ asser_t2", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t2 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t2 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t3 ~ asser_t2 1.000 1.000 1.000 1.063 NA NA
d_asser_1 =~ asser_t3 1.000 1.000 1.000 0.800 NA NA
d_asser_1 ~1 1.366 0.577 2.154 4.459 3.395 0.001
asser_t2 ~1 4.107 4.000 4.214 10.087 75.475 0.000
d_asser_1 ~~ d_asser_1 0.075 0.027 0.122 0.794 3.075 0.002
asser_t2 ~ frequ 0.140 0.006 0.275 0.256 2.053 0.040
d_asser_1 ~ asser_t2 -0.337 -0.527 -0.147 -0.448 -3.473 0.001
d_asser_1 ~ frequ -0.009 -0.098 0.081 -0.021 -0.187 0.852
frequ ~~ frequ 0.550 0.374 0.726 1.000 6.131 0.000

The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.009, p = 0.852.

6.7.7.5 Energy - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6588.092 6672.019 0.921 0.048 0.062
# parameters of interest
params_lcs_energ_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_energ_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t3 ~ energ_t2", "d_energ_1 =~ energ_t3", "d_energ_1 ~ energ_t2", # change parameters
                     "d_energ_1 ~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", "d_energ_1 ~ sa07_03_t1", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t2 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t3 ~ energ_t2 1.000 1.000 1.000 0.971 NA NA
d_energ_1 =~ energ_t3 1.000 1.000 1.000 0.634 NA NA
d_energ_1 ~1 0.433 -0.247 1.113 2.663 1.248 0.212
energ_t2 ~1 2.266 2.118 2.414 9.093 30.084 0.000
d_energ_1 ~~ d_energ_1 0.024 -0.017 0.065 0.918 1.164 0.244
d_energ_1 ~ energ_t2 -0.185 -0.479 0.109 -0.284 -1.234 0.217
d_energ_1 ~ sa07_03_t1 -0.007 -0.034 0.020 -0.056 -0.488 0.625
sa07_03_t1 ~~ sa07_03_t1 1.868 1.644 2.092 1.000 16.353 0.000

The moderation effect of the facet-specific acceptance goal with the energy change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.007, p = 0.625.

6.7.7.6 Energy - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 7975.067 8084.537 0.927 0.054 0.068
# parameters of interest
params_lcs_energ_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_energ_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t3 ~ energ_t2", "d_energ_1 =~ energ_t3", "d_energ_1 ~ energ_t2", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t2 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t2 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t3 ~ energ_t2 1.000 1.000 1.000 0.958 NA NA
d_energ_1 =~ energ_t3 1.000 1.000 1.000 0.651 NA NA
d_energ_1 ~1 0.388 -0.339 1.116 2.224 1.046 0.296
energ_t2 ~1 2.232 2.106 2.357 8.679 34.905 0.000
d_energ_1 ~~ d_energ_1 0.028 -0.014 0.071 0.923 1.294 0.196
energ_t2 ~ frequ -0.124 -0.235 -0.013 -0.352 -2.190 0.029
d_energ_1 ~ energ_t2 -0.175 -0.507 0.157 -0.257 -1.030 0.303
d_energ_1 ~ frequ 0.012 -0.060 0.083 0.048 0.317 0.751
frequ ~~ frequ 0.531 0.353 0.709 1.000 5.846 0.000

The moderation effect of the frequency of self-acceptance behaviors with the energy change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.012, p = 0.751.

6.7.7.7 Compassion - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 7022.316 7106.242 0.976 0.036 0.04
# parameters of interest
params_lcs_compa_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_compa_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t3 ~ compa_t2", "d_compa_1 =~ compa_t3", "d_compa_1 ~ compa_t2", # change parameters
                     "d_compa_1 ~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", "d_compa_1 ~ sa07_04_t1", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t2 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t3 ~ compa_t2 1.000 1.000 1.000 0.986 NA NA
d_compa_1 =~ compa_t3 1.000 1.000 1.000 0.565 NA NA
d_compa_1 ~1 0.722 -0.263 1.707 1.961 1.437 0.151
compa_t2 ~1 4.529 4.362 4.697 7.048 53.033 0.000
d_compa_1 ~~ d_compa_1 0.126 0.025 0.226 0.928 2.457 0.014
d_compa_1 ~ compa_t2 -0.157 -0.367 0.053 -0.273 -1.461 0.144
d_compa_1 ~ sa07_04_t1 -0.016 -0.075 0.042 -0.063 -0.550 0.582
sa07_04_t1 ~~ sa07_04_t1 2.021 1.779 2.262 1.000 16.389 0.000

The moderation effect of the facet-specific acceptance goal with the compassion change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.016, p = 0.582.

6.7.7.8 Compassion - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8404.887 8514.357 0.979 0.033 0.043
# parameters of interest
params_lcs_compa_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_compa_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t3 ~ compa_t2", "d_compa_1 =~ compa_t3", "d_compa_1 ~ compa_t2", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t2 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t2 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t3 ~ compa_t2 1.000 1.000 1.000 0.989 NA NA
d_compa_1 =~ compa_t3 1.000 1.000 1.000 0.567 NA NA
d_compa_1 ~1 0.646 -0.310 1.601 1.737 1.324 0.186
compa_t2 ~1 4.336 4.232 4.440 6.690 81.798 0.000
d_compa_1 ~~ d_compa_1 0.128 0.025 0.231 0.926 2.433 0.015
compa_t2 ~ frequ 0.139 0.007 0.272 0.159 2.062 0.039
d_compa_1 ~ compa_t2 -0.148 -0.360 0.064 -0.258 -1.369 0.171
d_compa_1 ~ frequ -0.028 -0.161 0.106 -0.055 -0.408 0.683
frequ ~~ frequ 0.545 0.364 0.725 1.000 5.918 0.000

The moderation effect of the frequency of self-acceptance behaviors with the compassion change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.028, p = 0.683.

6.7.7.9 Respectfulness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 5452.331 5536.258 0.875 0.098 0.091
# parameters of interest
params_lcs_respe_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_respe_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t3 ~ respe_t2", "d_respe_1 =~ respe_t3", "d_respe_1 ~ respe_t2", # change parameters
                     "d_respe_1 ~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", "d_respe_1 ~ sa07_05_t1", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t2 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t3 ~ respe_t2 1.000 1.000 1.000 1.059 NA NA
d_respe_1 =~ respe_t3 1.000 1.000 1.000 0.423 NA NA
d_respe_1 ~1 0.601 -0.002 1.203 4.172 1.955 0.051
respe_t2 ~1 4.777 4.670 4.883 13.263 87.895 0.000
d_respe_1 ~~ d_respe_1 0.018 -0.007 0.044 0.886 1.405 0.160
d_respe_1 ~ respe_t2 -0.132 -0.257 -0.006 -0.330 -2.059 0.040
d_respe_1 ~ sa07_05_t1 0.004 -0.022 0.030 0.036 0.290 0.772
sa07_05_t1 ~~ sa07_05_t1 1.738 1.433 2.043 1.000 11.166 0.000

The moderation effect of the facet-specific acceptance goal with the respectfulness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.004, p = 0.772.

6.7.7.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 6864.934 6974.403 0.939 0.065 0.071
# parameters of interest
params_lcs_respe_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_respe_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t3 ~ respe_t2", "d_respe_1 =~ respe_t3", "d_respe_1 ~ respe_t2", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t2 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t2 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t3 ~ respe_t2 1.000 1.000 1.000 1.052 NA NA
d_respe_1 =~ respe_t3 1.000 1.000 1.000 0.425 NA NA
d_respe_1 ~1 0.449 -0.225 1.123 3.221 1.306 0.192
respe_t2 ~1 4.684 4.621 4.747 13.574 145.043 0.000
d_respe_1 ~~ d_respe_1 0.016 -0.007 0.039 0.830 1.383 0.167
respe_t2 ~ frequ 0.134 0.065 0.203 0.286 3.793 0.000
d_respe_1 ~ respe_t2 -0.098 -0.240 0.044 -0.242 -1.355 0.175
d_respe_1 ~ frequ -0.051 -0.109 0.007 -0.272 -1.734 0.083
frequ ~~ frequ 0.547 0.369 0.726 1.000 5.999 0.000

The moderation effect of the frequency of self-acceptance behaviors with respectfulness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.051, p = 0.083.

6.7.7.11 Trust - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6808.283 6892.21 0.974 0.036 0.043
# parameters of interest
params_lcs_trust_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_trust_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t3 ~ trust_t2", "d_trust_1 =~ trust_t3", "d_trust_1 ~ trust_t2", # change parameters
                     "d_trust_1 ~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", "d_trust_1 ~ sa07_06_t1", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t2 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t3 ~ trust_t2 1.000 1.000 1.000 0.979 NA NA
d_trust_1 =~ trust_t3 1.000 1.000 1.000 0.480 NA NA
d_trust_1 ~1 0.188 -0.144 0.520 0.953 1.109 0.267
trust_t2 ~1 1.973 1.812 2.134 4.903 24.078 0.000
d_trust_1 ~~ d_trust_1 0.037 -0.010 0.084 0.958 1.553 0.120
d_trust_1 ~ trust_t2 -0.098 -0.263 0.068 -0.200 -1.159 0.247
d_trust_1 ~ sa07_06_t1 0.006 -0.033 0.046 0.043 0.308 0.758
sa07_06_t1 ~~ sa07_06_t1 1.903 1.686 2.120 1.000 17.178 0.000

The moderation effect of the facet-specific acceptance goal with the trust change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.006, p = 0.758.

6.7.7.12 Trust - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8187.363 8296.832 0.989 0.024 0.044
# parameters of interest
params_lcs_trust_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_trust_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t3 ~ trust_t2", "d_trust_1 =~ trust_t3", "d_trust_1 ~ trust_t2", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t2 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t2 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t3 ~ trust_t2 1.000 1.000 1.000 0.981 NA NA
d_trust_1 =~ trust_t3 1.000 1.000 1.000 0.476 NA NA
d_trust_1 ~1 0.139 -0.217 0.495 0.739 0.763 0.445
trust_t2 ~1 1.951 1.847 2.054 5.046 36.858 0.000
d_trust_1 ~~ d_trust_1 0.032 -0.012 0.077 0.923 1.446 0.148
trust_t2 ~ frequ -0.175 -0.280 -0.069 -0.335 -3.240 0.001
d_trust_1 ~ trust_t2 -0.065 -0.250 0.120 -0.134 -0.690 0.490
d_trust_1 ~ frequ 0.051 -0.032 0.134 0.201 1.201 0.230
frequ ~~ frequ 0.548 0.369 0.728 1.000 5.990 0.000

The moderation effect of the frequency of self-acceptance behaviors with the trust change score from T2 to T3 (ideal-self) is not significantly different from zero (at p < .001), b = 0.051, p = 0.23.

6.7.7.13 Organization - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 5925.007 6008.933 0.901 0.068 0.076
# parameters of interest
params_lcs_organ_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_organ_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t3 ~ organ_t2", "d_organ_1 =~ organ_t3", "d_organ_1 ~ organ_t2", # change parameters
                     "d_organ_1 ~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", "d_organ_1 ~ sa07_07_t1", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t2 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t3 ~ organ_t2 1.000 1.000 1.000 1.011 NA NA
d_organ_1 =~ organ_t3 1.000 1.000 1.000 0.588 NA NA
d_organ_1 ~1 0.308 -0.025 0.642 1.174 1.813 0.070
organ_t2 ~1 1.570 1.386 1.754 3.475 16.726 0.000
d_organ_1 ~~ d_organ_1 0.062 -0.006 0.131 0.904 1.793 0.073
d_organ_1 ~ organ_t2 -0.179 -0.402 0.045 -0.307 -1.567 0.117
d_organ_1 ~ sa07_07_t1 -0.004 -0.045 0.036 -0.025 -0.217 0.828
sa07_07_t1 ~~ sa07_07_t1 2.101 1.901 2.301 1.000 20.565 0.000

The moderation effect of the facet-specific acceptance goal with the organization change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.004, p = 0.828.

6.7.7.14 Organization - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 7288.055 7397.524 0.943 0.053 0.066
# parameters of interest
params_lcs_organ_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_organ_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t3 ~ organ_t2", "d_organ_1 =~ organ_t3", "d_organ_1 ~ organ_t2", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t2 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t2 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t3 ~ organ_t2 1.000 1.000 1.000 1.013 NA NA
d_organ_1 =~ organ_t3 1.000 1.000 1.000 0.590 NA NA
d_organ_1 ~1 0.290 -0.059 0.639 1.106 1.629 0.103
organ_t2 ~1 1.666 1.563 1.769 3.703 31.645 0.000
d_organ_1 ~~ d_organ_1 0.062 -0.006 0.130 0.900 1.778 0.075
organ_t2 ~ frequ -0.127 -0.239 -0.014 -0.208 -2.206 0.027
d_organ_1 ~ organ_t2 -0.176 -0.403 0.051 -0.302 -1.517 0.129
d_organ_1 ~ frequ 0.018 -0.067 0.104 0.052 0.423 0.672
frequ ~~ frequ 0.545 0.366 0.723 1.000 5.979 0.000

The moderation effect of the frequency of self-acceptance behaviors with the organization change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.018, p = 0.672.

6.7.7.15 Productiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 5246.662 5330.588 0.924 0.068 0.06
# parameters of interest
params_lcs_produ_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_produ_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t3 ~ produ_t2", "d_produ_1 =~ produ_t3", "d_produ_1 ~ produ_t2", # change parameters
                     "d_produ_1 ~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", "d_produ_1 ~ sa07_08_t1", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t2 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t3 ~ produ_t2 1.000 1.000 1.000 0.933 NA NA
d_produ_1 =~ produ_t3 1.000 1.000 1.000 0.589 NA NA
d_produ_1 ~1 0.249 -0.063 0.561 1.029 1.562 0.118
produ_t2 ~1 1.386 1.254 1.517 3.615 20.684 0.000
d_produ_1 ~~ d_produ_1 0.056 0.005 0.108 0.961 2.134 0.033
d_produ_1 ~ produ_t2 -0.123 -0.346 0.100 -0.195 -1.084 0.278
d_produ_1 ~ sa07_08_t1 -0.003 -0.034 0.028 -0.017 -0.180 0.857
sa07_08_t1 ~~ sa07_08_t1 1.945 1.739 2.151 1.000 18.494 0.000

The moderation effect of the facet-specific acceptance goal with the productiveness change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.003, p = 0.857.

6.7.7.16 Productiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 6628.406 6737.875 0.934 0.063 0.06
# parameters of interest
params_lcs_produ_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_produ_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t3 ~ produ_t2", "d_produ_1 =~ produ_t3", "d_produ_1 ~ produ_t2", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t2 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t2 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t3 ~ produ_t2 1.000 1.000 1.000 0.933 NA NA
d_produ_1 =~ produ_t3 1.000 1.000 1.000 0.588 NA NA
d_produ_1 ~1 0.211 -0.130 0.552 0.867 1.215 0.224
produ_t2 ~1 1.504 1.428 1.580 3.889 38.867 0.000
d_produ_1 ~~ d_produ_1 0.056 0.004 0.109 0.948 2.114 0.035
produ_t2 ~ frequ -0.140 -0.234 -0.046 -0.265 -2.917 0.004
d_produ_1 ~ produ_t2 -0.104 -0.348 0.140 -0.165 -0.836 0.403
d_produ_1 ~ frequ 0.040 -0.045 0.125 0.120 0.925 0.355
frequ ~~ frequ 0.534 0.355 0.712 1.000 5.863 0.000

The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score from T2 to T3 (ideal-self) is not significantly different from zero (at p < .001), b = 0.04, p = 0.355.

6.7.7.17 Responsibility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6202.454 6286.381 0.947 0.054 0.052
# parameters of interest
params_lcs_respo_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_respo_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t3 ~ respo_t2", "d_respo_1 =~ respo_t3", "d_respo_1 ~ respo_t2", # change parameters
                     "d_respo_1 ~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", "d_respo_1 ~ sa07_09_t1", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t2 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t3 ~ respo_t2 1.000 1.000 1.000 0.991 NA NA
d_respo_1 =~ respo_t3 1.000 1.000 1.000 0.380 NA NA
d_respo_1 ~1 0.351 -0.385 1.087 1.829 0.935 0.350
respo_t2 ~1 4.429 4.270 4.588 8.843 54.611 0.000
d_respo_1 ~~ d_respo_1 0.035 -0.019 0.089 0.953 1.270 0.204
d_respo_1 ~ respo_t2 -0.070 -0.230 0.090 -0.184 -0.861 0.389
d_respo_1 ~ sa07_09_t1 -0.018 -0.061 0.025 -0.137 -0.827 0.408
sa07_09_t1 ~~ sa07_09_t1 2.123 1.890 2.357 1.000 17.822 0.000

The moderation effect of the facet-specific acceptance goal with the responsibility change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.018, p = 0.408.

6.7.7.18 Responsibility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 7560.493 7669.963 0.96 0.048 0.052
# parameters of interest
params_lcs_respo_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_respo_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t3 ~ respo_t2", "d_respo_1 =~ respo_t3", "d_respo_1 ~ respo_t2", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t2 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t2 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t3 ~ respo_t2 1.000 1.000 1.000 0.990 NA NA
d_respo_1 =~ respo_t3 1.000 1.000 1.000 0.379 NA NA
d_respo_1 ~1 0.113 -0.720 0.947 0.589 0.266 0.790
respo_t2 ~1 4.326 4.220 4.432 8.609 79.971 0.000
d_respo_1 ~~ d_respo_1 0.031 -0.025 0.087 0.846 1.091 0.275
respo_t2 ~ frequ 0.177 0.054 0.301 0.260 2.821 0.005
d_respo_1 ~ respo_t2 -0.026 -0.213 0.160 -0.068 -0.274 0.784
d_respo_1 ~ frequ -0.097 -0.210 0.017 -0.370 -1.669 0.095
frequ ~~ frequ 0.542 0.363 0.720 1.000 5.948 0.000

The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score from T2 to T3 (ideal-self) is not significantly different from zero (at p < .001), b = -0.097, p = 0.095.

6.7.7.19 Anxiety - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6846.576 6930.502 0.943 0.044 0.055
# parameters of interest
params_lcs_anxie_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_anxie_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t3 ~ anxie_t2", "d_anxie_1 =~ anxie_t3", "d_anxie_1 ~ anxie_t2", # change parameters
                     "d_anxie_1 ~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", "d_anxie_1 ~ sa07_10_t1", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t2 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t3 ~ anxie_t2 1.000 1.000 1.000 0.915 NA NA
d_anxie_1 =~ anxie_t3 1.000 1.000 1.000 0.159 NA NA
d_anxie_1 ~1 -0.488 -1.888 0.913 -12.263 -0.683 0.495
anxie_t2 ~1 4.587 4.476 4.698 19.994 81.000 0.000
d_anxie_1 ~~ d_anxie_1 0.000 -0.021 0.022 0.135 0.019 0.984
d_anxie_1 ~ anxie_t2 0.087 -0.217 0.391 0.502 0.562 0.574
d_anxie_1 ~ sa07_10_t1 0.022 -0.002 0.046 0.800 1.771 0.077
sa07_10_t1 ~~ sa07_10_t1 2.149 1.932 2.366 1.000 19.408 0.000

The moderation effect of the facet-specific acceptance goal with the anxiety change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.022, p = 0.077.

6.7.7.20 Anxiety - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8209.513 8318.982 0.984 0.025 0.051
# parameters of interest
params_lcs_anxie_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_anxie_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t3 ~ anxie_t2", "d_anxie_1 =~ anxie_t3", "d_anxie_1 ~ anxie_t2", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t2 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t2 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t3 ~ anxie_t2 1.000 1.000 1.000 0.915 NA NA
d_anxie_1 =~ anxie_t3 1.000 1.000 1.000 0.153 NA NA
d_anxie_1 ~1 -0.440 -1.907 1.026 -11.268 -0.589 0.556
anxie_t2 ~1 4.570 4.496 4.643 19.538 122.080 0.000
d_anxie_1 ~~ d_anxie_1 0.001 -0.022 0.024 0.421 0.055 0.956
anxie_t2 ~ frequ 0.030 -0.031 0.091 0.095 0.956 0.339
d_anxie_1 ~ anxie_t2 0.093 -0.225 0.410 0.555 0.572 0.567
d_anxie_1 ~ frequ -0.030 -0.098 0.037 -0.576 -0.885 0.376
frequ ~~ frequ 0.547 0.368 0.726 1.000 5.986 0.000

The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.03, p = 0.376.

6.7.7.21 Depression - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 5366.16 5450.086 0.883 0.077 0.07
# parameters of interest
params_lcs_depre_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_depre_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t3 ~ depre_t2", "d_depre_1 =~ depre_t3", "d_depre_1 ~ depre_t2", # change parameters
                     "d_depre_1 ~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", "d_depre_1 ~ sa07_11_t1", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t2 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t3 ~ depre_t2 1.000 1.000 1.000 1.029 NA NA
d_depre_1 =~ depre_t3 1.000 1.000 1.000 0.519 NA NA
d_depre_1 ~1 0.783 -0.121 1.687 4.574 1.697 0.090
depre_t2 ~1 4.479 4.353 4.605 13.207 69.685 0.000
d_depre_1 ~~ d_depre_1 0.026 -0.006 0.058 0.886 1.600 0.110
d_depre_1 ~ depre_t2 -0.159 -0.355 0.037 -0.315 -1.592 0.111
d_depre_1 ~ sa07_11_t1 -0.016 -0.042 0.010 -0.138 -1.228 0.219
sa07_11_t1 ~~ sa07_11_t1 2.117 1.909 2.324 1.000 19.977 0.000

The moderation effect of the facet-specific acceptance goal with the depression change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.016, p = 0.219.

6.7.7.22 Depression - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 6729.933 6839.403 0.914 0.068 0.068
# parameters of interest
params_lcs_depre_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_depre_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t3 ~ depre_t2", "d_depre_1 =~ depre_t3", "d_depre_1 ~ depre_t2", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t2 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t2 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t3 ~ depre_t2 1.000 1.000 1.000 1.032 NA NA
d_depre_1 =~ depre_t3 1.000 1.000 1.000 0.520 NA NA
d_depre_1 ~1 0.661 -0.267 1.588 3.755 1.396 0.163
depre_t2 ~1 4.441 4.364 4.518 12.719 113.062 0.000
d_depre_1 ~~ d_depre_1 0.027 -0.007 0.061 0.866 1.535 0.125
depre_t2 ~ frequ 0.070 -0.012 0.152 0.147 1.669 0.095
d_depre_1 ~ depre_t2 -0.143 -0.347 0.061 -0.283 -1.372 0.170
d_depre_1 ~ frequ -0.046 -0.108 0.016 -0.193 -1.463 0.143
frequ ~~ frequ 0.542 0.363 0.720 1.000 5.960 0.000

The moderation effect of the frequency of self-acceptance behaviors with the depression change score from T2 to T3 (ideal-self) is not significantly different from zero, b = -0.046, p = 0.143.

6.7.7.23 Volatility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6286.275 6370.202 0.97 0.037 0.047
# parameters of interest
params_lcs_volat_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_volat_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t3 ~ volat_t2", "d_volat_1 =~ volat_t3", "d_volat_1 ~ volat_t2", # change parameters
                     "d_volat_1 ~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", "d_volat_1 ~ sa07_12_t1", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t2 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t3 ~ volat_t2 1.000 1.000 1.000 1.016 NA NA
d_volat_1 =~ volat_t3 1.000 1.000 1.000 0.388 NA NA
d_volat_1 ~1 0.181 -0.087 0.450 1.069 1.325 0.185
volat_t2 ~1 1.526 1.378 1.674 3.435 20.199 0.000
d_volat_1 ~~ d_volat_1 0.027 -0.017 0.072 0.944 1.197 0.231
d_volat_1 ~ volat_t2 -0.090 -0.248 0.067 -0.236 -1.125 0.260
d_volat_1 ~ sa07_12_t1 0.005 -0.032 0.043 0.042 0.279 0.780
sa07_12_t1 ~~ sa07_12_t1 1.780 1.584 1.976 1.000 17.813 0.000

The moderation effect of the facet-specific acceptance goal with the volatility change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.005, p = 0.78.

6.7.7.24 Volatility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 7696.29 7805.759 0.964 0.043 0.05
# parameters of interest
params_lcs_volat_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_volat_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t3 ~ volat_t2", "d_volat_1 =~ volat_t3", "d_volat_1 ~ volat_t2", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t2 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t2 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t3 ~ volat_t2 1.000 1.000 1.000 1.016 NA NA
d_volat_1 =~ volat_t3 1.000 1.000 1.000 0.385 NA NA
d_volat_1 ~1 0.172 -0.090 0.434 1.024 1.285 0.199
volat_t2 ~1 1.618 1.529 1.706 3.656 35.758 0.000
d_volat_1 ~~ d_volat_1 0.026 -0.019 0.071 0.925 1.146 0.252
volat_t2 ~ frequ -0.129 -0.226 -0.032 -0.216 -2.614 0.009
d_volat_1 ~ volat_t2 -0.075 -0.241 0.091 -0.198 -0.889 0.374
d_volat_1 ~ frequ 0.035 -0.057 0.126 0.152 0.742 0.458
frequ ~~ frequ 0.543 0.365 0.722 1.000 5.960 0.000

The moderation effect of the frequency of self-acceptance behaviors with the volatility change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.035, p = 0.458.

6.7.7.25 Curiosity - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6693.246 6777.172 0.966 0.038 0.049
# parameters of interest
params_lcs_curio_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_curio_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t3 ~ curio_t2", "d_curio_1 =~ curio_t3", "d_curio_1 ~ curio_t2", # change parameters
                     "d_curio_1 ~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", "d_curio_1 ~ sa07_13_t1", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t2 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t3 ~ curio_t2 1.000 1.000 1.000 0.909 NA NA
d_curio_1 =~ curio_t3 1.000 1.000 1.000 0.533 NA NA
d_curio_1 ~1 0.244 -0.901 1.390 1.031 0.418 0.676
curio_t2 ~1 4.637 4.501 4.773 11.483 66.727 0.000
d_curio_1 ~~ d_curio_1 0.055 -0.003 0.114 0.985 1.856 0.063
d_curio_1 ~ curio_t2 -0.061 -0.301 0.179 -0.104 -0.501 0.617
d_curio_1 ~ sa07_13_t1 0.008 -0.039 0.055 0.043 0.318 0.751
sa07_13_t1 ~~ sa07_13_t1 1.762 1.547 1.978 1.000 16.041 0.000

The moderation effect of the facet-specific acceptance goal with the curiosity change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.008, p = 0.751.

6.7.7.26 Curiosity - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8113.273 8222.742 0.99 0.022 0.046
# parameters of interest
params_lcs_curio_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_curio_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t3 ~ curio_t2", "d_curio_1 =~ curio_t3", "d_curio_1 ~ curio_t2", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t2 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t2 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t3 ~ curio_t2 1.000 1.000 1.000 0.914 NA NA
d_curio_1 =~ curio_t3 1.000 1.000 1.000 0.541 NA NA
d_curio_1 ~1 0.389 -0.671 1.449 1.643 0.719 0.472
curio_t2 ~1 4.489 4.416 4.562 11.231 120.617 0.000
d_curio_1 ~~ d_curio_1 0.053 -0.003 0.109 0.944 1.840 0.066
curio_t2 ~ frequ 0.055 -0.042 0.153 0.103 1.113 0.266
d_curio_1 ~ curio_t2 -0.089 -0.320 0.142 -0.151 -0.756 0.450
d_curio_1 ~ frequ 0.063 -0.028 0.154 0.198 1.365 0.172
frequ ~~ frequ 0.551 0.372 0.729 1.000 6.038 0.000

The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.063, p = 0.172.

6.7.7.27 Aesthetic - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6733.907 6817.833 1 0 0.036
# parameters of interest
params_lcs_aesth_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_aesth_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t3 ~ aesth_t2", "d_aesth_1 =~ aesth_t3", "d_aesth_1 ~ aesth_t2", # change parameters
                     "d_aesth_1 ~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", "d_aesth_1 ~ sa07_14_t1", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t2 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t3 ~ aesth_t2 1.000 1.000 1.000 0.950 NA NA
d_aesth_1 =~ aesth_t3 1.000 1.000 1.000 0.575 NA NA
d_aesth_1 ~1 0.364 -0.056 0.784 2.246 1.700 0.089
aesth_t2 ~1 2.592 2.384 2.799 9.662 24.514 0.000
d_aesth_1 ~~ d_aesth_1 0.024 -0.003 0.052 0.929 1.736 0.083
d_aesth_1 ~ aesth_t2 -0.150 -0.315 0.015 -0.249 -1.785 0.074
d_aesth_1 ~ sa07_14_t1 0.018 -0.006 0.043 0.162 1.474 0.141
sa07_14_t1 ~~ sa07_14_t1 2.046 1.852 2.241 1.000 20.596 0.000

The moderation effect of the facet-specific acceptance goal with the aesthetic change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.018, p = 0.141.

6.7.7.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 8109.692 8219.161 0.987 0.03 0.044
# parameters of interest
params_lcs_aesth_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_aesth_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t3 ~ aesth_t2", "d_aesth_1 =~ aesth_t3", "d_aesth_1 ~ aesth_t2", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t2 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t2 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t3 ~ aesth_t2 1.000 1.000 1.000 0.950 NA NA
d_aesth_1 =~ aesth_t3 1.000 1.000 1.000 0.577 NA NA
d_aesth_1 ~1 0.354 -0.101 0.808 2.203 1.525 0.127
aesth_t2 ~1 2.702 2.549 2.856 10.229 34.515 0.000
d_aesth_1 ~~ d_aesth_1 0.025 -0.004 0.053 0.953 1.710 0.087
aesth_t2 ~ frequ -0.105 -0.184 -0.026 -0.291 -2.594 0.009
d_aesth_1 ~ aesth_t2 -0.128 -0.301 0.046 -0.210 -1.441 0.149
d_aesth_1 ~ frequ 0.004 -0.045 0.054 0.019 0.166 0.868
frequ ~~ frequ 0.539 0.360 0.717 1.000 5.905 0.000

The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.004, p = 0.868.

6.7.7.29 Imagination - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_specif_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 23 6371.892 6455.818 0.934 0.056 0.063
# parameters of interest
params_lcs_imagi_ideal_specif_hyp7_fu <- broom::tidy(fit_mi_lcs_imagi_ideal_specif_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t3 ~ imagi_t2", "d_imagi_1 =~ imagi_t3", "d_imagi_1 ~ imagi_t2", # change parameters
                     "d_imagi_1 ~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", "d_imagi_1 ~ sa07_15_t1", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t2 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_specif_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t3 ~ imagi_t2 1.000 1.000 1.000 0.944 NA NA
d_imagi_1 =~ imagi_t3 1.000 1.000 1.000 0.481 NA NA
d_imagi_1 ~1 0.231 -1.075 1.536 0.958 0.346 0.729
imagi_t2 ~1 4.732 4.588 4.876 10.023 64.402 0.000
d_imagi_1 ~~ d_imagi_1 0.056 -0.008 0.120 0.969 1.717 0.086
d_imagi_1 ~ imagi_t2 -0.056 -0.327 0.216 -0.109 -0.402 0.688
d_imagi_1 ~ sa07_15_t1 0.019 -0.026 0.063 0.115 0.827 0.408
sa07_15_t1 ~~ sa07_15_t1 2.182 1.988 2.376 1.000 22.048 0.000

The moderation effect of the facet-specific acceptance goal with the imagination change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.019, p = 0.408.

6.7.7.30 Imagination - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_ideal_frequ_hyp7_fu) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
284 30 7735.574 7845.043 0.976 0.034 0.052
# parameters of interest
params_lcs_imagi_ideal_frequ_hyp7_fu <- broom::tidy(fit_mi_lcs_imagi_ideal_frequ_hyp7_fu, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t3 ~ imagi_t2", "d_imagi_1 =~ imagi_t3", "d_imagi_1 ~ imagi_t2", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t2 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t2 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_ideal_frequ_hyp7_fu, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t3 ~ imagi_t2 1.000 1.000 1.000 0.942 NA NA
d_imagi_1 =~ imagi_t3 1.000 1.000 1.000 0.482 NA NA
d_imagi_1 ~1 0.348 -0.928 1.624 1.437 0.535 0.593
imagi_t2 ~1 4.514 4.434 4.594 9.520 110.076 0.000
d_imagi_1 ~~ d_imagi_1 0.058 -0.008 0.123 0.982 1.721 0.085
imagi_t2 ~ frequ 0.091 -0.004 0.186 0.142 1.872 0.061
d_imagi_1 ~ imagi_t2 -0.070 -0.344 0.204 -0.136 -0.498 0.618
d_imagi_1 ~ frequ 0.011 -0.097 0.118 0.032 0.195 0.846
frequ ~~ frequ 0.544 0.365 0.722 1.000 5.970 0.000

The moderation effect of the frequency of self-acceptance behaviors with the imagination change score from T2 to T3 (ideal-self) is not significantly different from zero, b = 0.011, p = 0.846.

6.7.8 Big Five facets (current self)

6.7.8.1 Sociability - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7926.536 8014.329 0.961 0.073 0.042
# parameters of interest
params_lcs_socia_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_socia_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                     "d_socia_1 ~ sa07_01_t1", "sa07_01_t1 ~~ sa07_01_t1", "d_socia_1 ~ sa07_01_t1", # acceptance goals
                     "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                     "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.076 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.479 NA NA
d_socia_1 ~1 0.651 0.278 1.023 1.478 3.424 0.001
socia_t1 ~1 4.092 3.789 4.394 4.139 26.497 0.000
d_socia_1 ~~ d_socia_1 0.167 0.086 0.247 0.859 4.042 0.000
d_socia_1 ~ socia_t1 -0.169 -0.244 -0.093 -0.379 -4.361 0.000
d_socia_1 ~ sa07_01_t1 -0.002 -0.060 0.056 -0.006 -0.063 0.950
sa07_01_t1 ~~ sa07_01_t1 1.826 1.634 2.019 1.000 18.622 0.000

The moderation effect of the facet-specific acceptance goal with the sociability change score (current-self) is not significantly different from zero, b = -0.002, p = 0.95.

6.7.8.2 Sociability - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_socia_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9235.151 9349.664 0.963 0.061 0.043
# parameters of interest
params_lcs_socia_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_socia_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("socia_t2 ~ socia_t1", "d_socia_1 =~ socia_t2", "d_socia_1 ~ socia_t1", # change parameters
                           "d_socia_1 ~ frequ", "frequ ~~ frequ", "socia_t1 ~ frequ", # frequency of self improvement
                           "d_socia_1 ~1 ", "socia_t1 ~1 ", "", # means
                           "d_socia_1 ~~ d_socia_1"))
kable(params_lcs_socia_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
socia_t2 ~ socia_t1 1.000 1.000 1.000 1.076 NA NA
d_socia_1 =~ socia_t2 1.000 1.000 1.000 0.478 NA NA
d_socia_1 ~1 0.636 0.436 0.836 1.460 6.235 0.000
socia_t1 ~1 2.858 2.724 2.992 2.917 41.743 0.000
d_socia_1 ~~ d_socia_1 0.163 0.083 0.243 0.858 3.986 0.000
socia_t1 ~ frequ 0.029 -0.179 0.237 0.022 0.275 0.783
d_socia_1 ~ socia_t1 -0.166 -0.231 -0.102 -0.374 -5.068 0.000
d_socia_1 ~ frequ -0.020 -0.142 0.102 -0.034 -0.321 0.748
frequ ~~ frequ 0.549 0.370 0.728 1.000 6.013 0.000

The moderation effect of the frequency of self-acceptance behaviors with sociability change score (current-self) is not significantly different from zero, b = -0.02, p = 0.748.

6.7.8.3 Assertiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8078.291 8166.085 0.983 0.041 0.039
# parameters of interest
params_lcs_asser_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_asser_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                     "d_asser_1 ~ sa07_02_t1", "sa07_02_t1 ~~ sa07_02_t1", "d_asser_1 ~ sa07_02_t1", # acceptance goals
                     "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                     "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 1.003 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.372 NA NA
d_asser_1 ~1 0.199 -0.139 0.537 0.728 1.153 0.249
asser_t1 ~1 3.683 3.374 3.992 4.999 23.377 0.000
d_asser_1 ~~ d_asser_1 0.071 0.020 0.123 0.956 2.727 0.006
d_asser_1 ~ asser_t1 -0.062 -0.147 0.022 -0.169 -1.453 0.146
d_asser_1 ~ sa07_02_t1 0.017 -0.029 0.062 0.081 0.723 0.470
sa07_02_t1 ~~ sa07_02_t1 1.747 1.573 1.921 1.000 19.717 0.000

The moderation effect of the facet-specific acceptance goal with the assertiveness change score (current-self) is not significantly different from zero, b = 0.017, p = 0.47.

6.7.8.4 Assertiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_asser_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9341.854 9456.368 0.988 0.031 0.042
# parameters of interest
params_lcs_asser_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_asser_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("asser_t2 ~ asser_t1", "d_asser_1 =~ asser_t2", "d_asser_1 ~ asser_t1", # change parameters
                           "d_asser_1 ~ frequ", "frequ ~~ frequ", "asser_t1 ~ frequ", # frequency of self improvement
                           "d_asser_1 ~1 ", "asser_t1 ~1 ", "", # means
                           "d_asser_1 ~~ d_asser_1"))
kable(params_lcs_asser_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
asser_t2 ~ asser_t1 1.000 1.000 1.000 0.996 NA NA
d_asser_1 =~ asser_t2 1.000 1.000 1.000 0.369 NA NA
d_asser_1 ~1 0.280 0.039 0.522 1.076 2.278 0.023
asser_t1 ~1 3.105 2.986 3.224 4.407 51.115 0.000
d_asser_1 ~~ d_asser_1 0.063 0.017 0.109 0.926 2.680 0.007
asser_t1 ~ frequ 0.101 -0.060 0.263 0.105 1.228 0.219
d_asser_1 ~ asser_t1 -0.073 -0.151 0.005 -0.197 -1.824 0.068
d_asser_1 ~ frequ 0.074 -0.020 0.169 0.208 1.546 0.122
frequ ~~ frequ 0.534 0.352 0.716 1.000 5.748 0.000

The moderation effect of the frequency of self-acceptance behaviors with assertiveness change score (current-self) is not significantly different from zero, b = 0.074, p = 0.122.

6.7.8.5 Energy - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8193.783 8281.577 0.987 0.034 0.045
# parameters of interest
params_lcs_energ_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_energ_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                     "d_energ_1 ~ sa07_03_t1", "sa07_03_t1 ~~ sa07_03_t1", "d_energ_1 ~ sa07_03_t1", # acceptance goals
                     "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                     "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.018 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.488 NA NA
d_energ_1 ~1 0.306 0.047 0.564 1.703 2.317 0.021
energ_t1 ~1 2.210 1.987 2.433 5.911 19.436 0.000
d_energ_1 ~~ d_energ_1 0.030 0.002 0.057 0.924 2.114 0.034
d_energ_1 ~ energ_t1 -0.130 -0.241 -0.019 -0.270 -2.288 0.022
d_energ_1 ~ sa07_03_t1 -0.001 -0.029 0.026 -0.011 -0.099 0.921
sa07_03_t1 ~~ sa07_03_t1 1.851 1.650 2.052 1.000 18.028 0.000

The moderation effect of the facet-specific acceptance goal with the energy change score (current-self) is not significantly different from zero, b = -0.001, p = 0.921.

6.7.8.6 Energy - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_energ_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9491.901 9606.415 0.984 0.033 0.051
# parameters of interest
params_lcs_energ_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_energ_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("energ_t2 ~ energ_t1", "d_energ_1 =~ energ_t2", "d_energ_1 ~ energ_t1", # change parameters
                           "d_energ_1 ~ frequ", "frequ ~~ frequ", "energ_t1 ~ frequ", # frequency of self improvement
                           "d_energ_1 ~1 ", "energ_t1 ~1 ", "", # means
                           "d_energ_1 ~~ d_energ_1"))
kable(params_lcs_energ_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
energ_t2 ~ energ_t1 1.000 1.000 1.000 1.019 NA NA
d_energ_1 =~ energ_t2 1.000 1.000 1.000 0.487 NA NA
d_energ_1 ~1 0.324 0.063 0.585 1.757 2.437 0.015
energ_t1 ~1 2.676 2.564 2.789 6.934 46.622 0.000
d_energ_1 ~~ d_energ_1 0.031 0.001 0.060 0.903 2.060 0.039
energ_t1 ~ frequ -0.048 -0.142 0.046 -0.091 -0.998 0.318
d_energ_1 ~ energ_t1 -0.139 -0.237 -0.041 -0.290 -2.779 0.005
d_energ_1 ~ frequ -0.036 -0.088 0.017 -0.143 -1.333 0.183
frequ ~~ frequ 0.543 0.365 0.720 1.000 5.994 0.000

The moderation effect of the frequency of self-acceptance behaviors with the energy change score (current-self) is not significantly different from zero, b = -0.036, p = 0.183.

6.7.8.7 Compassion - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8053.413 8141.206 0.972 0.045 0.045
# parameters of interest
params_lcs_compa_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_compa_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                     "d_compa_1 ~ sa07_04_t1", "sa07_04_t1 ~~ sa07_04_t1", "d_compa_1 ~ sa07_04_t1", # acceptance goals
                     "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                     "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.893 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.554 NA NA
d_compa_1 ~1 0.531 -0.332 1.394 1.396 1.206 0.228
compa_t1 ~1 4.546 4.397 4.694 7.408 60.131 0.000
d_compa_1 ~~ d_compa_1 0.141 0.049 0.232 0.971 3.024 0.002
d_compa_1 ~ compa_t1 -0.094 -0.273 0.085 -0.151 -1.026 0.305
d_compa_1 ~ sa07_04_t1 -0.038 -0.104 0.028 -0.141 -1.122 0.262
sa07_04_t1 ~~ sa07_04_t1 2.024 1.813 2.235 1.000 18.799 0.000

The moderation effect of the facet-specific acceptance goal with the compassion change score (current-self) is not significantly different from zero, b = -0.038, p = 0.262.

6.7.8.8 Compassion - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_compa_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9270.387 9384.9 0.973 0.041 0.05
# parameters of interest
params_lcs_compa_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_compa_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("compa_t2 ~ compa_t1", "d_compa_1 =~ compa_t2", "d_compa_1 ~ compa_t1", # change parameters
                           "d_compa_1 ~ frequ", "frequ ~~ frequ", "compa_t1 ~ frequ", # frequency of self improvement
                           "d_compa_1 ~1 ", "compa_t1 ~1 ", "", # means
                           "d_compa_1 ~~ d_compa_1"))
kable(params_lcs_compa_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
compa_t2 ~ compa_t1 1.000 1.000 1.000 0.897 NA NA
d_compa_1 =~ compa_t2 1.000 1.000 1.000 0.551 NA NA
d_compa_1 ~1 0.322 -0.396 1.039 0.820 0.878 0.380
compa_t1 ~1 4.213 4.123 4.303 6.594 91.762 0.000
d_compa_1 ~~ d_compa_1 0.152 0.050 0.254 0.988 2.911 0.004
compa_t1 ~ frequ 0.172 0.036 0.307 0.197 2.478 0.013
d_compa_1 ~ compa_t1 -0.064 -0.227 0.099 -0.105 -0.772 0.440
d_compa_1 ~ frequ -0.012 -0.136 0.113 -0.022 -0.182 0.856
frequ ~~ frequ 0.540 0.360 0.720 1.000 5.888 0.000

The moderation effect of the frequency of self-acceptance behaviors with the compassion change score (current-self) is not significantly different from zero, b = -0.012, p = 0.856.

6.7.8.9 Respectfulness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 6959.501 7047.295 0.967 0.052 0.054
# parameters of interest
params_lcs_respe_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_respe_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                     "d_respe_1 ~ sa07_05_t1", "sa07_05_t1 ~~ sa07_05_t1", "d_respe_1 ~ sa07_05_t1", # acceptance goals
                     "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                     "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.999 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.629 NA NA
d_respe_1 ~1 1.468 0.661 2.275 4.458 3.567 0.000
respe_t1 ~1 4.734 4.616 4.852 9.044 78.428 0.000
d_respe_1 ~~ d_respe_1 0.084 0.025 0.144 0.779 2.803 0.005
d_respe_1 ~ respe_t1 -0.283 -0.449 -0.118 -0.451 -3.364 0.001
d_respe_1 ~ sa07_05_t1 -0.094 -0.152 -0.035 -0.376 -3.135 0.002
sa07_05_t1 ~~ sa07_05_t1 1.744 1.473 2.015 1.000 12.613 0.000

The facet-specific acceptance goal significantly moderates changes in respectfulness (current-self) between T1 and T2 (but also not at p < .001 …), b = -0.094, p = 0.002.

6.7.8.10 Respectfulness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respe_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 8263.913 8378.426 0.965 0.049 0.065
# parameters of interest
params_lcs_respe_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respe_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respe_t2 ~ respe_t1", "d_respe_1 =~ respe_t2", "d_respe_1 ~ respe_t1", # change parameters
                           "d_respe_1 ~ frequ", "frequ ~~ frequ", "respe_t1 ~ frequ", # frequency of self improvement
                           "d_respe_1 ~1 ", "respe_t1 ~1 ", "", # means
                           "d_respe_1 ~~ d_respe_1"))
kable(params_lcs_respe_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respe_t2 ~ respe_t1 1.000 1.000 1.000 0.997 NA NA
d_respe_1 =~ respe_t2 1.000 1.000 1.000 0.629 NA NA
d_respe_1 ~1 0.919 0.152 1.686 2.776 2.347 0.019
respe_t1 ~1 4.444 4.374 4.514 8.477 124.257 0.000
d_respe_1 ~~ d_respe_1 0.098 0.024 0.171 0.890 2.588 0.010
respe_t1 ~ frequ 0.053 -0.056 0.161 0.074 0.955 0.340
d_respe_1 ~ respe_t1 -0.201 -0.369 -0.034 -0.319 -2.357 0.018
d_respe_1 ~ frequ 0.052 -0.033 0.136 0.115 1.201 0.230
frequ ~~ frequ 0.543 0.365 0.721 1.000 5.972 0.000

The moderation effect of the frequency of self-acceptance behaviors with the respectfulness change score (current-self) is not significantly different from zero, b = 0.052, p = 0.23.

6.7.8.11 Trust - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8321.353 8409.146 0.966 0.051 0.049
# parameters of interest
params_lcs_trust_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_trust_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                     "d_trust_1 ~ sa07_06_t1", "sa07_06_t1 ~~ sa07_06_t1", "d_trust_1 ~ sa07_06_t1", # acceptance goals
                     "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                     "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.040 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.314 NA NA
d_trust_1 ~1 0.199 -0.114 0.512 0.928 1.245 0.213
trust_t1 ~1 2.489 2.274 2.705 3.508 22.676 0.000
d_trust_1 ~~ d_trust_1 0.037 -0.030 0.104 0.804 1.075 0.282
d_trust_1 ~ trust_t1 -0.053 -0.168 0.062 -0.177 -0.910 0.363
d_trust_1 ~ sa07_06_t1 -0.056 -0.110 -0.002 -0.360 -2.034 0.042
sa07_06_t1 ~~ sa07_06_t1 1.909 1.711 2.108 1.000 18.829 0.000

The moderation effect of the facet-specific acceptance goal with the trust change score (current-self) is not significantly different from zero (at p < .001), b = -0.056, p = 0.042.

6.7.8.12 Trust - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_trust_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9551.319 9665.832 0.963 0.049 0.063
# parameters of interest
params_lcs_trust_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_trust_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("trust_t2 ~ trust_t1", "d_trust_1 =~ trust_t2", "d_trust_1 ~ trust_t1", # change parameters
                           "d_trust_1 ~ frequ", "frequ ~~ frequ", "trust_t1 ~ frequ", # frequency of self improvement
                           "d_trust_1 ~1 ", "trust_t1 ~1 ", "", # means
                           "d_trust_1 ~~ d_trust_1"))
kable(params_lcs_trust_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
trust_t2 ~ trust_t1 1.000 1.000 1.000 1.038 NA NA
d_trust_1 =~ trust_t2 1.000 1.000 1.000 0.312 NA NA
d_trust_1 ~1 0.150 -0.166 0.465 0.706 0.930 0.352
trust_t1 ~1 2.849 2.732 2.967 4.035 47.461 0.000
d_trust_1 ~~ d_trust_1 0.040 -0.027 0.107 0.895 1.181 0.238
trust_t1 ~ frequ -0.083 -0.242 0.076 -0.086 -1.020 0.308
d_trust_1 ~ trust_t1 -0.086 -0.194 0.023 -0.285 -1.550 0.121
d_trust_1 ~ frequ -0.052 -0.154 0.050 -0.179 -0.991 0.322
frequ ~~ frequ 0.541 0.363 0.719 1.000 5.946 0.000

The moderation effect of the frequency of self-acceptance behaviors with the trust change score (current-self) is not significantly different from zero, b = -0.052, p = 0.322.

6.7.8.13 Organization - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7915.149 8002.942 1 0 0.023
# parameters of interest
params_lcs_organ_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_organ_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                     "d_organ_1 ~ sa07_07_t1", "sa07_07_t1 ~~ sa07_07_t1", "d_organ_1 ~ sa07_07_t1", # acceptance goals
                     "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                     "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.003 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.507 NA NA
d_organ_1 ~1 0.297 0.037 0.558 0.628 2.237 0.025
organ_t1 ~1 1.826 1.549 2.103 1.950 12.916 0.000
d_organ_1 ~~ d_organ_1 0.205 0.108 0.302 0.914 4.127 0.000
d_organ_1 ~ organ_t1 -0.179 -0.293 -0.065 -0.355 -3.087 0.002
d_organ_1 ~ sa07_07_t1 0.055 -0.012 0.122 0.167 1.602 0.109
sa07_07_t1 ~~ sa07_07_t1 2.070 1.888 2.251 1.000 22.344 0.000

The moderation effect of the facet-specific acceptance goal with the organization change score (current-self) is not significantly different from zero, b = 0.055, p = 0.109.

6.7.8.14 Organization - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_organ_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9211.576 9326.089 1 0 0.029
# parameters of interest
params_lcs_organ_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_organ_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("organ_t2 ~ organ_t1", "d_organ_1 =~ organ_t2", "d_organ_1 ~ organ_t1", # change parameters
                           "d_organ_1 ~ frequ", "frequ ~~ frequ", "organ_t1 ~ frequ", # frequency of self improvement
                           "d_organ_1 ~1 ", "organ_t1 ~1 ", "", # means
                           "d_organ_1 ~~ d_organ_1"))
kable(params_lcs_organ_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
organ_t2 ~ organ_t1 1.000 1.000 1.000 1.003 NA NA
d_organ_1 =~ organ_t2 1.000 1.000 1.000 0.509 NA NA
d_organ_1 ~1 0.342 0.077 0.608 0.736 2.524 0.012
organ_t1 ~1 2.963 2.828 3.098 3.229 43.056 0.000
d_organ_1 ~~ d_organ_1 0.201 0.104 0.297 0.926 4.063 0.000
organ_t1 ~ frequ -0.180 -0.377 0.017 -0.144 -1.788 0.074
d_organ_1 ~ organ_t1 -0.137 -0.227 -0.048 -0.271 -3.017 0.003
d_organ_1 ~ frequ -0.050 -0.172 0.072 -0.079 -0.801 0.423
frequ ~~ frequ 0.543 0.365 0.722 1.000 5.969 0.000

The moderation effect of the frequency of self-acceptance behaviors with the organization change score (current-self) is not significantly different from zero, b = -0.05, p = 0.423.

6.7.8.15 Productiveness - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7795.129 7882.923 0.966 0.061 0.043
# parameters of interest
params_lcs_produ_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_produ_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                     "d_produ_1 ~ sa07_08_t1", "sa07_08_t1 ~~ sa07_08_t1", "d_produ_1 ~ sa07_08_t1", # acceptance goals
                     "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                     "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.962 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.540 NA NA
d_produ_1 ~1 0.279 -0.055 0.614 0.708 1.635 0.102
produ_t1 ~1 2.428 2.131 2.725 3.453 16.029 0.000
d_produ_1 ~~ d_produ_1 0.149 0.078 0.220 0.956 4.138 0.000
d_produ_1 ~ produ_t1 -0.125 -0.257 0.008 -0.222 -1.837 0.066
d_produ_1 ~ sa07_08_t1 0.006 -0.061 0.073 0.022 0.185 0.853
sa07_08_t1 ~~ sa07_08_t1 1.880 1.691 2.069 1.000 19.477 0.000

The moderation effect of the facet-specific acceptance goal with the productiveness change score (current-self) is not significantly different from zero, b = 0.006, p = 0.853.

6.7.8.16 Productiveness - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_produ_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9108.876 9223.39 0.968 0.051 0.051
# parameters of interest
params_lcs_produ_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_produ_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("produ_t2 ~ produ_t1", "d_produ_1 =~ produ_t2", "d_produ_1 ~ produ_t1", # change parameters
                           "d_produ_1 ~ frequ", "frequ ~~ frequ", "produ_t1 ~ frequ", # frequency of self improvement
                           "d_produ_1 ~1 ", "produ_t1 ~1 ", "", # means
                           "d_produ_1 ~~ d_produ_1"))
kable(params_lcs_produ_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
produ_t2 ~ produ_t1 1.000 1.000 1.000 0.960 NA NA
d_produ_1 =~ produ_t2 1.000 1.000 1.000 0.541 NA NA
d_produ_1 ~1 0.320 -0.015 0.654 0.814 1.871 0.061
produ_t1 ~1 3.428 3.300 3.556 4.921 52.346 0.000
d_produ_1 ~~ d_produ_1 0.143 0.073 0.212 0.926 4.040 0.000
produ_t1 ~ frequ -0.135 -0.293 0.024 -0.141 -1.668 0.095
d_produ_1 ~ produ_t1 -0.130 -0.228 -0.032 -0.231 -2.600 0.009
d_produ_1 ~ frequ -0.097 -0.212 0.017 -0.181 -1.668 0.095
frequ ~~ frequ 0.533 0.352 0.715 1.000 5.764 0.000

The moderation effect of the frequency of self-acceptance behaviors with the productiveness change score (current-self) is not significantly different from zero, b = -0.097, p = 0.095.

6.7.8.17 Responsibility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7947.26 8035.053 0.893 0.099 0.085
# parameters of interest
params_lcs_respo_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_respo_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                     "d_respo_1 ~ sa07_09_t1", "sa07_09_t1 ~~ sa07_09_t1", "d_respo_1 ~ sa07_09_t1", # acceptance goals
                     "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                     "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.017 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.509 NA NA
d_respo_1 ~1 0.551 0.029 1.074 3.055 2.068 0.039
respo_t1 ~1 3.994 3.819 4.170 11.074 44.576 0.000
d_respo_1 ~~ d_respo_1 0.030 0.001 0.059 0.920 2.048 0.041
d_respo_1 ~ respo_t1 -0.144 -0.270 -0.019 -0.289 -2.253 0.024
d_respo_1 ~ sa07_09_t1 -0.001 -0.033 0.031 -0.010 -0.081 0.936
sa07_09_t1 ~~ sa07_09_t1 2.069 1.860 2.278 1.000 19.415 0.000

The moderation effect of the facet-specific acceptance goal with the responsibility change score (current-self) is not significantly different from zero, b = -0.001, p = 0.936.

6.7.8.18 Responsibility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_respo_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9213.842 9328.355 0.895 0.087 0.088
# parameters of interest
params_lcs_respo_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_respo_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("respo_t2 ~ respo_t1", "d_respo_1 =~ respo_t2", "d_respo_1 ~ respo_t1", # change parameters
                           "d_respo_1 ~ frequ", "frequ ~~ frequ", "respo_t1 ~ frequ", # frequency of self improvement
                           "d_respo_1 ~1 ", "respo_t1 ~1 ", "", # means
                           "d_respo_1 ~~ d_respo_1"))
kable(params_lcs_respo_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
respo_t2 ~ respo_t1 1.000 1.000 1.000 1.015 NA NA
d_respo_1 =~ respo_t2 1.000 1.000 1.000 0.507 NA NA
d_respo_1 ~1 0.528 0.167 0.889 2.878 2.864 0.004
respo_t1 ~1 3.659 3.557 3.760 9.957 70.684 0.000
d_respo_1 ~~ d_respo_1 0.031 0.001 0.061 0.922 2.017 0.044
respo_t1 ~ frequ 0.028 -0.061 0.116 0.056 0.617 0.537
d_respo_1 ~ respo_t1 -0.139 -0.235 -0.043 -0.278 -2.831 0.005
d_respo_1 ~ frequ -0.005 -0.053 0.044 -0.020 -0.196 0.844
frequ ~~ frequ 0.549 0.371 0.728 1.000 6.019 0.000

The moderation effect of the frequency of self-acceptance behaviors with the responsibility change score (current-self) is not significantly different from zero, b = -0.005, p = 0.844.

6.7.8.19 Anxiety - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8155.146 8242.94 1 0 0.027
# parameters of interest
params_lcs_anxie_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_anxie_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                     "d_anxie_1 ~ sa07_10_t1", "sa07_10_t1 ~~ sa07_10_t1", "d_anxie_1 ~ sa07_10_t1", # acceptance goals
                     "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                     "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.983 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.430 NA NA
d_anxie_1 ~1 0.607 0.191 1.022 1.480 2.864 0.004
anxie_t1 ~1 3.815 3.514 4.116 4.071 24.832 0.000
d_anxie_1 ~~ d_anxie_1 0.160 0.072 0.249 0.954 3.554 0.000
d_anxie_1 ~ anxie_t1 -0.103 -0.201 -0.005 -0.236 -2.069 0.039
d_anxie_1 ~ sa07_10_t1 -0.037 -0.097 0.023 -0.132 -1.209 0.227
sa07_10_t1 ~~ sa07_10_t1 2.115 1.921 2.308 1.000 21.431 0.000

The moderation effect of the facet-specific acceptance goal with the anxiety change score (current-self) is not significantly different from zero, b = -0.037, p = 0.227.

6.7.8.20 Anxiety - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_anxie_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9385.887 9500.4 0.99 0.028 0.043
# parameters of interest
params_lcs_anxie_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_anxie_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("anxie_t2 ~ anxie_t1", "d_anxie_1 =~ anxie_t2", "d_anxie_1 ~ anxie_t1", # change parameters
                           "d_anxie_1 ~ frequ", "frequ ~~ frequ", "anxie_t1 ~ frequ", # frequency of self improvement
                           "d_anxie_1 ~1 ", "anxie_t1 ~1 ", "", # means
                           "d_anxie_1 ~~ d_anxie_1"))
kable(params_lcs_anxie_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
anxie_t2 ~ anxie_t1 1.000 1.000 1.000 0.982 NA NA
d_anxie_1 =~ anxie_t2 1.000 1.000 1.000 0.428 NA NA
d_anxie_1 ~1 0.346 0.083 0.608 0.834 2.579 0.010
anxie_t1 ~1 2.876 2.745 3.008 3.027 42.816 0.000
d_anxie_1 ~~ d_anxie_1 0.153 0.062 0.244 0.888 3.286 0.001
anxie_t1 ~ frequ -0.223 -0.395 -0.050 -0.176 -2.529 0.011
d_anxie_1 ~ anxie_t1 -0.054 -0.147 0.038 -0.125 -1.152 0.249
d_anxie_1 ~ frequ 0.160 0.026 0.295 0.290 2.332 0.020
frequ ~~ frequ 0.563 0.381 0.745 1.000 6.055 0.000

The moderation effect of the frequency of self-acceptance behaviors with the anxiety change score (current-self) is not significantly different from zero (at p < .001), b = 0.16, p = 0.02.

6.7.8.21 Depression - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8058.315 8146.108 0.954 0.077 0.06
# parameters of interest
params_lcs_depre_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_depre_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                     "d_depre_1 ~ sa07_11_t1", "sa07_11_t1 ~~ sa07_11_t1", "d_depre_1 ~ sa07_11_t1", # acceptance goals
                     "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                     "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 0.987 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.508 NA NA
d_depre_1 ~1 0.575 0.259 0.890 2.010 3.571 0.000
depre_t1 ~1 3.571 3.375 3.767 6.424 35.659 0.000
d_depre_1 ~~ d_depre_1 0.077 0.042 0.112 0.943 4.306 0.000
d_depre_1 ~ depre_t1 -0.135 -0.221 -0.048 -0.262 -3.036 0.002
d_depre_1 ~ sa07_11_t1 -0.013 -0.045 0.019 -0.066 -0.785 0.432
sa07_11_t1 ~~ sa07_11_t1 2.106 1.918 2.294 1.000 21.989 0.000

The moderation effect of the facet-specific acceptance goal with the depression change score (current-self) is not significantly different from zero, b = -0.013, p = 0.432.

6.7.8.22 Depression - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_depre_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9302.558 9417.072 0.955 0.066 0.066
# parameters of interest
params_lcs_depre_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_depre_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("depre_t2 ~ depre_t1", "d_depre_1 =~ depre_t2", "d_depre_1 ~ depre_t1", # change parameters
                           "d_depre_1 ~ frequ", "frequ ~~ frequ", "depre_t1 ~ frequ", # frequency of self improvement
                           "d_depre_1 ~1 ", "depre_t1 ~1 ", "", # means
                           "d_depre_1 ~~ d_depre_1"))
kable(params_lcs_depre_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
depre_t2 ~ depre_t1 1.000 1.000 1.000 0.985 NA NA
d_depre_1 =~ depre_t2 1.000 1.000 1.000 0.505 NA NA
d_depre_1 ~1 0.437 0.203 0.672 1.538 3.656 0.000
depre_t1 ~1 3.025 2.908 3.142 5.448 50.721 0.000
d_depre_1 ~~ d_depre_1 0.073 0.039 0.106 0.900 4.268 0.000
depre_t1 ~ frequ -0.089 -0.199 0.020 -0.119 -1.594 0.111
d_depre_1 ~ depre_t1 -0.103 -0.180 -0.025 -0.200 -2.599 0.009
d_depre_1 ~ frequ 0.085 0.008 0.162 0.222 2.172 0.030
frequ ~~ frequ 0.550 0.370 0.730 1.000 5.985 0.000

The moderation effect of the frequency of self-acceptance behaviors with the depression change score (current-self) is not significantly different from zero (at p < .001), b = 0.085, p = 0.03.

6.7.8.23 Volatility - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8162.721 8250.515 0.99 0.032 0.037
# parameters of interest
params_lcs_volat_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_volat_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                     "d_volat_1 ~ sa07_12_t1", "sa07_12_t1 ~~ sa07_12_t1", "d_volat_1 ~ sa07_12_t1", # acceptance goals
                     "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                     "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.057 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.452 NA NA
d_volat_1 ~1 0.330 0.073 0.588 0.815 2.516 0.012
volat_t1 ~1 2.236 1.963 2.508 2.357 16.086 0.000
d_volat_1 ~~ d_volat_1 0.146 0.063 0.228 0.885 3.460 0.001
d_volat_1 ~ volat_t1 -0.134 -0.233 -0.035 -0.314 -2.653 0.008
d_volat_1 ~ sa07_12_t1 -0.016 -0.087 0.056 -0.050 -0.428 0.668
sa07_12_t1 ~~ sa07_12_t1 1.709 1.531 1.887 1.000 18.847 0.000

The moderation effect of the facet-specific acceptance goal with the volatility change score (current-self) is not significantly different from zero, b = -0.016, p = 0.668.

6.7.8.24 Volatility - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_volat_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9468.703 9583.217 0.985 0.035 0.045
# parameters of interest
params_lcs_volat_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_volat_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("volat_t2 ~ volat_t1", "d_volat_1 =~ volat_t2", "d_volat_1 ~ volat_t1", # change parameters
                           "d_volat_1 ~ frequ", "frequ ~~ frequ", "volat_t1 ~ frequ", # frequency of self improvement
                           "d_volat_1 ~1 ", "volat_t1 ~1 ", "", # means
                           "d_volat_1 ~~ d_volat_1"))
kable(params_lcs_volat_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
volat_t2 ~ volat_t1 1.000 1.000 1.000 1.056 NA NA
d_volat_1 =~ volat_t2 1.000 1.000 1.000 0.450 NA NA
d_volat_1 ~1 0.313 0.051 0.575 0.771 2.342 0.019
volat_t1 ~1 3.119 2.986 3.251 3.272 45.993 0.000
d_volat_1 ~~ d_volat_1 0.146 0.064 0.229 0.887 3.471 0.001
volat_t1 ~ frequ 0.068 -0.118 0.254 0.053 0.714 0.475
d_volat_1 ~ volat_t1 -0.143 -0.224 -0.062 -0.336 -3.479 0.001
d_volat_1 ~ frequ 0.018 -0.106 0.141 0.032 0.279 0.780
frequ ~~ frequ 0.555 0.373 0.737 1.000 5.976 0.000

The moderation effect of the frequency of self-acceptance behaviors with the volatility change score (current-self) is significantly different from zero, b = 0.018, p = 0.78.

6.7.8.25 Curiosity - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7851.661 7939.454 0.982 0.038 0.047
# parameters of interest
params_lcs_curio_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_curio_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                     "d_curio_1 ~ sa07_13_t1", "sa07_13_t1 ~~ sa07_13_t1", "d_curio_1 ~ sa07_13_t1", # acceptance goals
                     "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                     "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.085 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 NA NA NA
d_curio_1 ~1 0.073 -0.424 0.570 NA 0.287 0.774
curio_t1 ~1 4.376 4.210 4.542 7.657 51.627 0.000
d_curio_1 ~~ d_curio_1 -0.016 -0.053 0.021 NA -0.828 0.408
d_curio_1 ~ curio_t1 -0.026 -0.136 0.084 NA -0.464 0.643
d_curio_1 ~ sa07_13_t1 0.040 0.004 0.075 NA 2.202 0.028
sa07_13_t1 ~~ sa07_13_t1 1.724 1.530 1.918 1.000 17.438 0.000

The moderation effect of the facet-specific acceptance goal with the curiosity change score (current-self) is not significantly different from zero (at p < .001), b = 0.04, p = 0.028.

6.7.8.26 Curiosity - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_curio_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9121.411 9235.924 0.991 0.025 0.04
# parameters of interest
params_lcs_curio_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_curio_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("curio_t2 ~ curio_t1", "d_curio_1 =~ curio_t2", "d_curio_1 ~ curio_t1", # change parameters
                           "d_curio_1 ~ frequ", "frequ ~~ frequ", "curio_t1 ~ frequ", # frequency of self improvement
                           "d_curio_1 ~1 ", "curio_t1 ~1 ", "", # means
                           "d_curio_1 ~~ d_curio_1"))
kable(params_lcs_curio_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
curio_t2 ~ curio_t1 1.000 1.000 1.000 1.084 NA NA
d_curio_1 =~ curio_t2 1.000 1.000 1.000 NA NA NA
d_curio_1 ~1 0.315 -0.106 0.736 NA 1.466 0.143
curio_t1 ~1 4.032 3.933 4.131 7.155 79.542 0.000
d_curio_1 ~~ d_curio_1 -0.015 -0.049 0.019 NA -0.851 0.394
curio_t1 ~ frequ 0.089 -0.024 0.201 0.116 1.539 0.124
d_curio_1 ~ curio_t1 -0.063 -0.165 0.038 NA -1.225 0.220
d_curio_1 ~ frequ 0.053 -0.019 0.125 NA 1.449 0.147
frequ ~~ frequ 0.541 0.364 0.719 1.000 5.972 0.000

The moderation effect of the frequency of self-acceptance behaviors with the curiosity change score (current-self) is not significantly different from zero, b = 0.053, p = 0.147.

6.7.8.27 Aesthetic - specific, facet-level acceptance goal as moderator of change

Results summary (sa07_xx_t1 = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 8194.758 8282.551 1 0 0.037
# parameters of interest
params_lcs_aesth_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_aesth_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                     "d_aesth_1 ~ sa07_14_t1", "sa07_14_t1 ~~ sa07_14_t1", "d_aesth_1 ~ sa07_14_t1", # acceptance goals
                     "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                     "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.996 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.377 NA NA
d_aesth_1 ~1 0.206 -0.062 0.474 1.594 1.506 0.132
aesth_t1 ~1 2.615 2.433 2.798 7.680 28.028 0.000
d_aesth_1 ~~ d_aesth_1 0.016 -0.005 0.037 0.959 1.504 0.133
d_aesth_1 ~ aesth_t1 -0.081 -0.184 0.021 -0.214 -1.550 0.121
d_aesth_1 ~ sa07_14_t1 0.010 -0.012 0.031 0.105 0.870 0.384
sa07_14_t1 ~~ sa07_14_t1 2.002 1.823 2.180 1.000 21.957 0.000

The moderation effect of the facet-specific acceptance goal with the aesthetic change score (current-self) is not significantly different from zero, b = 0.01, p = 0.384.

6.7.8.28 Aesthetic - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_aesth_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9407.546 9522.059 0.982 0.037 0.045
# parameters of interest
params_lcs_aesth_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_aesth_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("aesth_t2 ~ aesth_t1", "d_aesth_1 =~ aesth_t2", "d_aesth_1 ~ aesth_t1", # change parameters
                           "d_aesth_1 ~ frequ", "frequ ~~ frequ", "aesth_t1 ~ frequ", # frequency of self improvement
                           "d_aesth_1 ~1 ", "aesth_t1 ~1 ", "", # means
                           "d_aesth_1 ~~ d_aesth_1"))
kable(params_lcs_aesth_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
aesth_t2 ~ aesth_t1 1.000 1.000 1.000 0.998 NA NA
d_aesth_1 =~ aesth_t2 1.000 1.000 1.000 0.379 NA NA
d_aesth_1 ~1 0.292 0.001 0.582 2.304 1.969 0.049
aesth_t1 ~1 2.848 2.725 2.970 8.538 45.482 0.000
d_aesth_1 ~~ d_aesth_1 0.014 -0.005 0.033 0.873 1.449 0.147
aesth_t1 ~ frequ -0.121 -0.201 -0.040 -0.265 -2.932 0.003
d_aesth_1 ~ aesth_t1 -0.102 -0.205 0.001 -0.269 -1.942 0.052
d_aesth_1 ~ frequ -0.055 -0.111 0.002 -0.316 -1.899 0.058
frequ ~~ frequ 0.539 0.360 0.718 1.000 5.894 0.000

The moderation effect of the frequency of self-acceptance behaviors with the aesthetic change score (current-self) is not significantly different from zero, b = -0.055, p = 0.058.

6.7.8.29 Imagination - specific, facet-level acceptance goal as moderator of change

Results summary (*sa07_$$_t1* = trait/facet specific acceptance goal):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_specif_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 23 7895.793 7983.587 0.939 0.074 0.056
# parameters of interest
params_lcs_imagi_curr_specif_hyp7 <- broom::tidy(fit_mi_lcs_imagi_curr_specif_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
  select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
  filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                     "d_imagi_1 ~ sa07_15_t1", "sa07_15_t1 ~~ sa07_15_t1", "d_imagi_1 ~ sa07_15_t1", # acceptance goals
                     "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                     "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_specif_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.073 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.436 NA NA
d_imagi_1 ~1 0.711 -0.004 1.425 2.609 1.950 0.051
imagi_t1 ~1 4.273 4.093 4.452 6.370 46.676 0.000
d_imagi_1 ~~ d_imagi_1 0.064 -0.017 0.146 0.866 1.543 0.123
d_imagi_1 ~ imagi_t1 -0.154 -0.324 0.015 -0.380 -1.788 0.074
d_imagi_1 ~ sa07_15_t1 -0.006 -0.055 0.043 -0.032 -0.239 0.811
sa07_15_t1 ~~ sa07_15_t1 2.135 1.956 2.314 1.000 23.329 0.000

The moderation effect of the facet-specific acceptance goal with the imagination change score (current-self) is not significantly different from zero, b = -0.006, p = 0.811.

6.7.8.30 Imagination - frequency of self-acceptance behaviors as moderator of change

Results summary (frequ = frequency of self-acceptance behavior):

# model fit
kable(broom::glance(fit_mi_lcs_imagi_curr_frequ_hyp7) %>% 
        select(nobs, npar, AIC, BIC, cfi, rmsea, srmr), digits = 3)
nobs npar AIC BIC cfi rmsea srmr
336 30 9129.832 9244.345 0.952 0.058 0.056
# parameters of interest
params_lcs_imagi_curr_frequ_hyp7 <- broom::tidy(fit_mi_lcs_imagi_curr_frequ_hyp7, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, estimate, conf.low, conf.high, std.all, statistic, p.value) %>% 
        filter(term %in% c("imagi_t2 ~ imagi_t1", "d_imagi_1 =~ imagi_t2", "d_imagi_1 ~ imagi_t1", # change parameters
                           "d_imagi_1 ~ frequ", "frequ ~~ frequ", "imagi_t1 ~ frequ", # frequency of self improvement
                           "d_imagi_1 ~1 ", "imagi_t1 ~1 ", "", # means
                           "d_imagi_1 ~~ d_imagi_1"))
kable(params_lcs_imagi_curr_frequ_hyp7, digits = 3) 
term estimate conf.low conf.high std.all statistic p.value
imagi_t2 ~ imagi_t1 1.000 1.000 1.000 1.067 NA NA
d_imagi_1 =~ imagi_t2 1.000 1.000 1.000 0.427 NA NA
d_imagi_1 ~1 0.661 0.068 1.254 2.423 2.185 0.029
imagi_t1 ~1 3.641 3.536 3.745 5.343 68.382 0.000
d_imagi_1 ~~ d_imagi_1 0.065 -0.018 0.147 0.869 1.538 0.124
imagi_t1 ~ frequ 0.122 -0.024 0.268 0.131 1.635 0.102
d_imagi_1 ~ imagi_t1 -0.145 -0.301 0.010 -0.363 -1.833 0.067
d_imagi_1 ~ frequ 0.033 -0.084 0.150 0.089 0.554 0.579
frequ ~~ frequ 0.537 0.357 0.717 1.000 5.841 0.000

The moderation effect of the frequency of self-acceptance behaviors with the imagination change score (current-self) is not significantly different from zero, b = 0.033, p = 0.579.

6.7.9 Hyp 7: Effects summary

6.7.9.1 Summary: Ideal self

Collect all relevant effects:

Show the code
# create df for table:

# main effects (change score)
df_table_hyp7_main <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp7 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_extra_ideal_frequ_hyp7 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_agree_ideal_specif_hyp7 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_agree_ideal_frequ_hyp7 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_consc_ideal_specif_hyp7 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_consc_ideal_frequ_hyp7 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_neuro_ideal_specif_hyp7 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_neuro_ideal_frequ_hyp7 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_openn_ideal_specif_hyp7 %>% filter(term=="d_openn_1 ~1 "),
  params_lcs_openn_ideal_frequ_hyp7 %>% filter(term=="d_openn_1 ~1 "),
  #facets
  params_lcs_socia_ideal_specif_hyp7 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_socia_ideal_frequ_hyp7 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_asser_ideal_specif_hyp7 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_asser_ideal_frequ_hyp7 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_energ_ideal_specif_hyp7 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_energ_ideal_frequ_hyp7 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_compa_ideal_specif_hyp7 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_compa_ideal_frequ_hyp7 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_respe_ideal_specif_hyp7 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_respe_ideal_frequ_hyp7 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_trust_ideal_specif_hyp7 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_trust_ideal_frequ_hyp7 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_organ_ideal_specif_hyp7 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_organ_ideal_frequ_hyp7 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_produ_ideal_specif_hyp7 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_produ_ideal_frequ_hyp7 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_respo_ideal_specif_hyp7 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_respo_ideal_frequ_hyp7 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_anxie_ideal_specif_hyp7 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_anxie_ideal_frequ_hyp7 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_depre_ideal_specif_hyp7 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_depre_ideal_frequ_hyp7 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_volat_ideal_specif_hyp7 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_volat_ideal_frequ_hyp7 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_curio_ideal_specif_hyp7 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_curio_ideal_frequ_hyp7 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_aesth_ideal_specif_hyp7 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_aesth_ideal_frequ_hyp7 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_imagi_ideal_specif_hyp7 %>% filter(term=="d_imagi_1 ~1 "),
  params_lcs_imagi_ideal_frequ_hyp7 %>% filter(term=="d_imagi_1 ~1 ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_main = estimate, std_main = std.all, p_main = p.value)

# moderation effects
df_table_hyp7_mod <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp7 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_ideal_frequ_hyp7 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_ideal_specif_hyp7 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_ideal_frequ_hyp7 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_ideal_specif_hyp7 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_ideal_frequ_hyp7 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_ideal_specif_hyp7 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_ideal_frequ_hyp7 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_ideal_specif_hyp7 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_ideal_frequ_hyp7 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_ideal_specif_hyp7 %>% filter(term=="d_socia_1 ~ sa07_01_t1"),
  params_lcs_socia_ideal_frequ_hyp7 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_ideal_specif_hyp7 %>% filter(term=="d_asser_1 ~ sa07_02_t1"),
  params_lcs_asser_ideal_frequ_hyp7 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_ideal_specif_hyp7 %>% filter(term=="d_energ_1 ~ sa07_03_t1"),
  params_lcs_energ_ideal_frequ_hyp7 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_ideal_specif_hyp7 %>% filter(term=="d_compa_1 ~ sa07_04_t1"),
  params_lcs_compa_ideal_frequ_hyp7 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_ideal_specif_hyp7 %>% filter(term=="d_respe_1 ~ sa07_05_t1"),
  params_lcs_respe_ideal_frequ_hyp7 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_ideal_specif_hyp7 %>% filter(term=="d_trust_1 ~ sa07_06_t1"),
  params_lcs_trust_ideal_frequ_hyp7 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_ideal_specif_hyp7 %>% filter(term=="d_organ_1 ~ sa07_07_t1"),
  params_lcs_organ_ideal_frequ_hyp7 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_ideal_specif_hyp7 %>% filter(term=="d_produ_1 ~ sa07_08_t1"),
  params_lcs_produ_ideal_frequ_hyp7 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_ideal_specif_hyp7 %>% filter(term=="d_respo_1 ~ sa07_09_t1"),
  params_lcs_respo_ideal_frequ_hyp7 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_ideal_specif_hyp7 %>% filter(term=="d_anxie_1 ~ sa07_10_t1"),
  params_lcs_anxie_ideal_frequ_hyp7 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_ideal_specif_hyp7 %>% filter(term=="d_depre_1 ~ sa07_11_t1"),
  params_lcs_depre_ideal_frequ_hyp7 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_ideal_specif_hyp7 %>% filter(term=="d_volat_1 ~ sa07_12_t1"),
  params_lcs_volat_ideal_frequ_hyp7 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_ideal_specif_hyp7 %>% filter(term=="d_curio_1 ~ sa07_13_t1"),
  params_lcs_curio_ideal_frequ_hyp7 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_ideal_specif_hyp7 %>% filter(term=="d_aesth_1 ~ sa07_14_t1"),
  params_lcs_aesth_ideal_frequ_hyp7 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_ideal_specif_hyp7 %>% filter(term=="d_imagi_1 ~ sa07_15_t1"),
  params_lcs_imagi_ideal_frequ_hyp7 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_mod = estimate, std_mod = std.all, p_mod = p.value)

# combine
df_table_hyp7 <- df_table_hyp7_main %>% left_join(df_table_hyp7_mod)

Results summary across the Big Five traits: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp7[1:10, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
extraversion goals 0.674 2.594 0.027 -0.022 -0.073 0.511
extraversion frequency 0.791 3.078 0.013 0.045 0.129 0.259
agreeableness goals 0.789 2.857 0.001 -0.022 -0.076 0.419
agreeableness frequency 0.860 3.146 0.001 0.062 0.168 0.085
conscientiousness goals 1.296 4.110 0.000 -0.043 -0.145 0.057
conscientiousness frequency 1.369 4.335 0.000 0.084 0.195 0.010
neuroticism goals 0.475 1.357 0.000 0.000 -0.001 0.993
neuroticism frequency 0.481 1.368 0.000 -0.015 -0.032 0.711
openness goals 1.229 5.729 0.000 -0.025 -0.092 0.219
openness frequency 1.175 5.437 0.000 0.027 0.093 0.257

No moderator effects at the domain level that are significantly different from zero at p < .001:

  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in ideal-level conscientiousness.

Results summary across the Big Five facets: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp7[11:40, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
sociability goals 0.060 0.314 0.913 -0.049 -0.344 0.044
sociability frequency 0.001 0.003 0.999 -0.021 -0.080 0.678
assertiveness goals 0.004 0.023 0.994 0.024 0.196 0.207
assertiveness frequency 0.015 0.089 0.977 -0.009 -0.039 0.839
energy goals 0.668 4.147 0.001 -0.002 -0.016 0.839
energy frequency 0.797 4.548 0.000 -0.060 -0.252 0.066
compassion goals 0.876 2.470 0.075 -0.009 -0.035 0.774
compassion frequency 0.869 2.351 0.059 0.028 0.055 0.665
respectfulness goals 0.380 2.533 0.369 -0.007 -0.066 0.680
respectfulness frequency 0.429 2.916 0.313 0.043 0.213 0.221
trust goals 0.475 1.731 0.002 -0.011 -0.057 0.595
trust frequency 0.508 1.857 0.001 -0.097 -0.262 0.042
organization goals 0.219 0.829 0.234 0.022 0.120 0.278
organization frequency 0.296 1.130 0.154 -0.023 -0.065 0.641
productiveness goals 0.285 1.193 0.032 0.026 0.150 0.091
productiveness frequency 0.397 1.656 0.002 -0.088 -0.267 0.011
responsibility goals 0.669 2.523 0.152 -0.024 -0.129 0.178
responsibility frequency 0.685 2.524 0.138 0.080 0.217 0.046
anxiety goals 1.543 6.100 0.004 -0.005 -0.028 0.762
anxiety frequency 1.460 5.662 0.008 -0.034 -0.099 0.418
depression goals 1.393 5.262 0.000 -0.004 -0.022 0.792
depression frequency 1.382 5.108 0.000 0.003 0.008 0.935
volatility goals 0.330 1.298 0.062 -0.030 -0.152 0.146
volatility frequency 0.293 1.140 0.105 -0.052 -0.148 0.318
curiosity goals 0.885 4.194 0.029 0.006 0.035 0.757
curiosity frequency 0.914 4.446 0.012 0.029 0.104 0.414
aesthetic goals 0.468 2.754 0.046 0.004 0.033 0.679
aesthetic frequency 0.542 3.330 0.024 -0.038 -0.170 0.194
imagination goals 1.207 3.643 0.008 -0.027 -0.119 0.184
imagination frequency 1.054 3.204 0.019 0.000 -0.001 0.996

No moderator effects at the facet level that are significantly different from zero at p < .001:

  • Only at p < .05: The facet-specific acceptance goal moderates changes in ideal-level sociability (opposite direction of effect).
  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in ideal-level trust (opposite direction of effect).
  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in ideal-level productiveness (opposite direction of effect).
  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in ideal-level responsibility.

Prepare data frame for plotting:

Show the code
df_table_hyp7_plot <- bind_rows(
  #traits
  params_lcs_extra_ideal_specif_hyp7 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_ideal_frequ_hyp7 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_ideal_specif_hyp7 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_ideal_frequ_hyp7 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_ideal_specif_hyp7 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_ideal_frequ_hyp7 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_ideal_specif_hyp7 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_ideal_frequ_hyp7 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_ideal_specif_hyp7 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_ideal_frequ_hyp7 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_ideal_specif_hyp7 %>% filter(term=="d_socia_1 ~ sa07_01_t1"),
  params_lcs_socia_ideal_frequ_hyp7 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_ideal_specif_hyp7 %>% filter(term=="d_asser_1 ~ sa07_02_t1"),
  params_lcs_asser_ideal_frequ_hyp7 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_ideal_specif_hyp7 %>% filter(term=="d_energ_1 ~ sa07_03_t1"),
  params_lcs_energ_ideal_frequ_hyp7 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_ideal_specif_hyp7 %>% filter(term=="d_compa_1 ~ sa07_04_t1"),
  params_lcs_compa_ideal_frequ_hyp7 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_ideal_specif_hyp7 %>% filter(term=="d_respe_1 ~ sa07_05_t1"),
  params_lcs_respe_ideal_frequ_hyp7 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_ideal_specif_hyp7 %>% filter(term=="d_trust_1 ~ sa07_06_t1"),
  params_lcs_trust_ideal_frequ_hyp7 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_ideal_specif_hyp7 %>% filter(term=="d_organ_1 ~ sa07_07_t1"),
  params_lcs_organ_ideal_frequ_hyp7 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_ideal_specif_hyp7 %>% filter(term=="d_produ_1 ~ sa07_08_t1"),
  params_lcs_produ_ideal_frequ_hyp7 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_ideal_specif_hyp7 %>% filter(term=="d_respo_1 ~ sa07_09_t1"),
  params_lcs_respo_ideal_frequ_hyp7 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_ideal_specif_hyp7 %>% filter(term=="d_anxie_1 ~ sa07_10_t1"),
  params_lcs_anxie_ideal_frequ_hyp7 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_ideal_specif_hyp7 %>% filter(term=="d_depre_1 ~ sa07_11_t1"),
  params_lcs_depre_ideal_frequ_hyp7 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_ideal_specif_hyp7 %>% filter(term=="d_volat_1 ~ sa07_12_t1"),
  params_lcs_volat_ideal_frequ_hyp7 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_ideal_specif_hyp7 %>% filter(term=="d_curio_1 ~ sa07_13_t1"),
  params_lcs_curio_ideal_frequ_hyp7 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_ideal_specif_hyp7 %>% filter(term=="d_aesth_1 ~ sa07_14_t1"),
  params_lcs_aesth_ideal_frequ_hyp7 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_ideal_specif_hyp7 %>% filter(term=="d_imagi_1 ~ sa07_15_t1"),
  params_lcs_imagi_ideal_frequ_hyp7 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp7_plot <- df_table_hyp7_plot %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor("ideal", levels = c("ideal"), labels = c("ideal"))) %>% 
  mutate(moderator = factor(moderator, levels = c("goals", "frequency"), labels = c("goals", "frequency"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses:

  • ideal = ideal-level personality
  • goals = specific, facet-level acceptance goal(s) as moderator
  • frequency = frequency of self-acceptance behavior as moderator
Show the code
ggplot(df_table_hyp7_plot, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + moderator, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")

6.7.9.2 Summary: Current self

Collect all relevant effects:

Show the code
# create df for table:

# main effects (change score)
df_table_hyp7_curr_main <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp7 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_extra_curr_frequ_hyp7 %>% filter(term=="d_extra_1 ~1 "),
  params_lcs_agree_curr_specif_hyp7 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_agree_curr_frequ_hyp7 %>% filter(term=="d_agree_1 ~1 "),
  params_lcs_consc_curr_specif_hyp7 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_consc_curr_frequ_hyp7 %>% filter(term=="d_consc_1 ~1 "),
  params_lcs_neuro_curr_specif_hyp7 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_neuro_curr_frequ_hyp7 %>% filter(term=="d_neuro_1 ~1 "),
  params_lcs_openn_curr_specif_hyp7 %>% filter(term=="d_openn_1 ~1 "),
  params_lcs_openn_curr_frequ_hyp7 %>% filter(term=="d_openn_1 ~1 "),
  #facets
  params_lcs_socia_curr_specif_hyp7 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_socia_curr_frequ_hyp7 %>% filter(term=="d_socia_1 ~1 "),
  params_lcs_asser_curr_specif_hyp7 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_asser_curr_frequ_hyp7 %>% filter(term=="d_asser_1 ~1 "),
  params_lcs_energ_curr_specif_hyp7 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_energ_curr_frequ_hyp7 %>% filter(term=="d_energ_1 ~1 "),
  params_lcs_compa_curr_specif_hyp7 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_compa_curr_frequ_hyp7 %>% filter(term=="d_compa_1 ~1 "),
  params_lcs_respe_curr_specif_hyp7 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_respe_curr_frequ_hyp7 %>% filter(term=="d_respe_1 ~1 "),
  params_lcs_trust_curr_specif_hyp7 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_trust_curr_frequ_hyp7 %>% filter(term=="d_trust_1 ~1 "),
  params_lcs_organ_curr_specif_hyp7 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_organ_curr_frequ_hyp7 %>% filter(term=="d_organ_1 ~1 "),
  params_lcs_produ_curr_specif_hyp7 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_produ_curr_frequ_hyp7 %>% filter(term=="d_produ_1 ~1 "),
  params_lcs_respo_curr_specif_hyp7 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_respo_curr_frequ_hyp7 %>% filter(term=="d_respo_1 ~1 "),
  params_lcs_anxie_curr_specif_hyp7 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_anxie_curr_frequ_hyp7 %>% filter(term=="d_anxie_1 ~1 "),
  params_lcs_depre_curr_specif_hyp7 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_depre_curr_frequ_hyp7 %>% filter(term=="d_depre_1 ~1 "),
  params_lcs_volat_curr_specif_hyp7 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_volat_curr_frequ_hyp7 %>% filter(term=="d_volat_1 ~1 "),
  params_lcs_curio_curr_specif_hyp7 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_curio_curr_frequ_hyp7 %>% filter(term=="d_curio_1 ~1 "),
  params_lcs_aesth_curr_specif_hyp7 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_aesth_curr_frequ_hyp7 %>% filter(term=="d_aesth_1 ~1 "),
  params_lcs_imagi_curr_specif_hyp7 %>% filter(term=="d_imagi_1 ~1 "),
  params_lcs_imagi_curr_frequ_hyp7 %>% filter(term=="d_imagi_1 ~1 ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_main = estimate, std_main = std.all, p_main = p.value)

# moderation effects
df_table_hyp7_curr_mod <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp7 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_curr_frequ_hyp7 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_curr_specif_hyp7 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_curr_frequ_hyp7 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_curr_specif_hyp7 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_curr_frequ_hyp7 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_curr_specif_hyp7 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_curr_frequ_hyp7 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_curr_specif_hyp7 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_curr_frequ_hyp7 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_curr_specif_hyp7 %>% filter(term=="d_socia_1 ~ sa07_01_t1"),
  params_lcs_socia_curr_frequ_hyp7 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_curr_specif_hyp7 %>% filter(term=="d_asser_1 ~ sa07_02_t1"),
  params_lcs_asser_curr_frequ_hyp7 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_curr_specif_hyp7 %>% filter(term=="d_energ_1 ~ sa07_03_t1"),
  params_lcs_energ_curr_frequ_hyp7 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_curr_specif_hyp7 %>% filter(term=="d_compa_1 ~ sa07_04_t1"),
  params_lcs_compa_curr_frequ_hyp7 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_curr_specif_hyp7 %>% filter(term=="d_respe_1 ~ sa07_05_t1"),
  params_lcs_respe_curr_frequ_hyp7 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_curr_specif_hyp7 %>% filter(term=="d_trust_1 ~ sa07_06_t1"),
  params_lcs_trust_curr_frequ_hyp7 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_curr_specif_hyp7 %>% filter(term=="d_organ_1 ~ sa07_07_t1"),
  params_lcs_organ_curr_frequ_hyp7 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_curr_specif_hyp7 %>% filter(term=="d_produ_1 ~ sa07_08_t1"),
  params_lcs_produ_curr_frequ_hyp7 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_curr_specif_hyp7 %>% filter(term=="d_respo_1 ~ sa07_09_t1"),
  params_lcs_respo_curr_frequ_hyp7 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_curr_specif_hyp7 %>% filter(term=="d_anxie_1 ~ sa07_10_t1"),
  params_lcs_anxie_curr_frequ_hyp7 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_curr_specif_hyp7 %>% filter(term=="d_depre_1 ~ sa07_11_t1"),
  params_lcs_depre_curr_frequ_hyp7 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_curr_specif_hyp7 %>% filter(term=="d_volat_1 ~ sa07_12_t1"),
  params_lcs_volat_curr_frequ_hyp7 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_curr_specif_hyp7 %>% filter(term=="d_curio_1 ~ sa07_13_t1"),
  params_lcs_curio_curr_frequ_hyp7 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_curr_specif_hyp7 %>% filter(term=="d_aesth_1 ~ sa07_14_t1"),
  params_lcs_aesth_curr_frequ_hyp7 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_curr_specif_hyp7 %>% filter(term=="d_imagi_1 ~ sa07_15_t1"),
  params_lcs_imagi_curr_frequ_hyp7 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, est_mod = estimate, std_mod = std.all, p_mod = p.value)

# combine
df_table_hyp7_curr <- df_table_hyp7_curr_main %>% left_join(df_table_hyp7_curr_mod)

Results summary across the Big Five traits: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp7_curr[1:10, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
extraversion goals 0.510 1.902 0.002 -0.015 -0.055 0.715
extraversion frequency 0.470 1.802 0.000 0.046 0.130 0.211
agreeableness goals 0.550 2.733 0.024 -0.051 -0.247 0.060
agreeableness frequency 0.421 2.051 0.059 0.036 0.128 0.214
conscientiousness goals 0.578 1.660 0.002 -0.029 -0.092 0.426
conscientiousness frequency 0.499 1.434 0.000 0.043 0.091 0.256
neuroticism goals 0.244 0.655 0.066 0.046 0.125 0.202
neuroticism frequency 0.117 0.312 0.267 -0.101 -0.201 0.029
openness goals 0.435 1.838 0.010 -0.001 -0.002 0.987
openness frequency 0.484 2.028 0.000 0.071 0.218 0.086

No moderation effects at the domain level that are significantly different from zero at p < .001:

  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level neuroticism.

Results summary across the Big Five facets: trait-specific acceptance goals (goals) and frequency of self-acceptance behaviors (frequency) as moderators on the latent change score. *_main* refers to the main effects (change scores) and *_mod* to the moderation effects.

kable(df_table_hyp7_curr[11:40, ], digits = 3)
trait moderator est_main std_main p_main est_mod std_mod p_mod
sociability goals 0.651 1.478 0.001 -0.002 -0.006 0.950
sociability frequency 0.636 1.460 0.000 -0.020 -0.034 0.748
assertiveness goals 0.199 0.728 0.249 0.017 0.081 0.470
assertiveness frequency 0.280 1.076 0.023 0.074 0.208 0.122
energy goals 0.306 1.703 0.021 -0.001 -0.011 0.921
energy frequency 0.324 1.757 0.015 -0.036 -0.143 0.183
compassion goals 0.531 1.396 0.228 -0.038 -0.141 0.262
compassion frequency 0.322 0.820 0.380 -0.012 -0.022 0.856
respectfulness goals 1.468 4.458 0.000 -0.094 -0.376 0.002
respectfulness frequency 0.919 2.776 0.019 0.052 0.115 0.230
trust goals 0.199 0.928 0.213 -0.056 -0.360 0.042
trust frequency 0.150 0.706 0.352 -0.052 -0.179 0.322
organization goals 0.297 0.628 0.025 0.055 0.167 0.109
organization frequency 0.342 0.736 0.012 -0.050 -0.079 0.423
productiveness goals 0.279 0.708 0.102 0.006 0.022 0.853
productiveness frequency 0.320 0.814 0.061 -0.097 -0.181 0.095
responsibility goals 0.551 3.055 0.039 -0.001 -0.010 0.936
responsibility frequency 0.528 2.878 0.004 -0.005 -0.020 0.844
anxiety goals 0.607 1.480 0.004 -0.037 -0.132 0.227
anxiety frequency 0.346 0.834 0.010 0.160 0.290 0.020
depression goals 0.575 2.010 0.000 -0.013 -0.066 0.432
depression frequency 0.437 1.538 0.000 0.085 0.222 0.030
volatility goals 0.330 0.815 0.012 -0.016 -0.050 0.668
volatility frequency 0.313 0.771 0.019 0.018 0.032 0.780
curiosity goals 0.073 NA 0.774 0.040 NA 0.028
curiosity frequency 0.315 NA 0.143 0.053 NA 0.147
aesthetic goals 0.206 1.594 0.132 0.010 0.105 0.384
aesthetic frequency 0.292 2.304 0.049 -0.055 -0.316 0.058
imagination goals 0.711 2.609 0.051 -0.006 -0.032 0.811
imagination frequency 0.661 2.423 0.029 0.033 0.089 0.579

No moderation effects at the facet level that are significantly different from zero at p < .001:

  • Only at p < .01: The facet-specific acceptance goal moderates changes in current-level respectfulness.
  • Only at p < .05: The facet-specific acceptance goal moderates changes in current-level trust.
  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level anxiety.
  • Only at p < .05: The frequency of self-acceptance behaviors moderates changes in current-level depression.
  • Only at p < .05: The facet-specific acceptance goal moderates changes in current-level curiosity.

Prepare data frame for plotting:

Show the code
df_table_hyp7_plot_curr <- bind_rows(
  #traits
  params_lcs_extra_curr_specif_hyp7 %>% filter(term=="d_extra_1 ~ goals"),
  params_lcs_extra_curr_frequ_hyp7 %>% filter(term=="d_extra_1 ~ frequ"),
  params_lcs_agree_curr_specif_hyp7 %>% filter(term=="d_agree_1 ~ goals"),
  params_lcs_agree_curr_frequ_hyp7 %>% filter(term=="d_agree_1 ~ frequ"),
  params_lcs_consc_curr_specif_hyp7 %>% filter(term=="d_consc_1 ~ goals"),
  params_lcs_consc_curr_frequ_hyp7 %>% filter(term=="d_consc_1 ~ frequ"),
  params_lcs_neuro_curr_specif_hyp7 %>% filter(term=="d_neuro_1 ~ goals"),
  params_lcs_neuro_curr_frequ_hyp7 %>% filter(term=="d_neuro_1 ~ frequ"),
  params_lcs_openn_curr_specif_hyp7 %>% filter(term=="d_openn_1 ~ goals"),
  params_lcs_openn_curr_frequ_hyp7 %>% filter(term=="d_openn_1 ~ frequ"),
  #facets
  params_lcs_socia_curr_specif_hyp7 %>% filter(term=="d_socia_1 ~ sa07_01_t1"),
  params_lcs_socia_curr_frequ_hyp7 %>% filter(term=="d_socia_1 ~ frequ"),
  params_lcs_asser_curr_specif_hyp7 %>% filter(term=="d_asser_1 ~ sa07_02_t1"),
  params_lcs_asser_curr_frequ_hyp7 %>% filter(term=="d_asser_1 ~ frequ"),
  params_lcs_energ_curr_specif_hyp7 %>% filter(term=="d_energ_1 ~ sa07_03_t1"),
  params_lcs_energ_curr_frequ_hyp7 %>% filter(term=="d_energ_1 ~ frequ"),
  params_lcs_compa_curr_specif_hyp7 %>% filter(term=="d_compa_1 ~ sa07_04_t1"),
  params_lcs_compa_curr_frequ_hyp7 %>% filter(term=="d_compa_1 ~ frequ"),
  params_lcs_respe_curr_specif_hyp7 %>% filter(term=="d_respe_1 ~ sa07_05_t1"),
  params_lcs_respe_curr_frequ_hyp7 %>% filter(term=="d_respe_1 ~ frequ"),
  params_lcs_trust_curr_specif_hyp7 %>% filter(term=="d_trust_1 ~ sa07_06_t1"),
  params_lcs_trust_curr_frequ_hyp7 %>% filter(term=="d_trust_1 ~ frequ"),
  params_lcs_organ_curr_specif_hyp7 %>% filter(term=="d_organ_1 ~ sa07_07_t1"),
  params_lcs_organ_curr_frequ_hyp7 %>% filter(term=="d_organ_1 ~ frequ"),
  params_lcs_produ_curr_specif_hyp7 %>% filter(term=="d_produ_1 ~ sa07_08_t1"),
  params_lcs_produ_curr_frequ_hyp7 %>% filter(term=="d_produ_1 ~ frequ"),
  params_lcs_respo_curr_specif_hyp7 %>% filter(term=="d_respo_1 ~ sa07_09_t1"),
  params_lcs_respo_curr_frequ_hyp7 %>% filter(term=="d_respo_1 ~ frequ"),
  params_lcs_anxie_curr_specif_hyp7 %>% filter(term=="d_anxie_1 ~ sa07_10_t1"),
  params_lcs_anxie_curr_frequ_hyp7 %>% filter(term=="d_anxie_1 ~ frequ"),
  params_lcs_depre_curr_specif_hyp7 %>% filter(term=="d_depre_1 ~ sa07_11_t1"),
  params_lcs_depre_curr_frequ_hyp7 %>% filter(term=="d_depre_1 ~ frequ"),
  params_lcs_volat_curr_specif_hyp7 %>% filter(term=="d_volat_1 ~ sa07_12_t1"),
  params_lcs_volat_curr_frequ_hyp7 %>% filter(term=="d_volat_1 ~ frequ"),
  params_lcs_curio_curr_specif_hyp7 %>% filter(term=="d_curio_1 ~ sa07_13_t1"),
  params_lcs_curio_curr_frequ_hyp7 %>% filter(term=="d_curio_1 ~ frequ"),
  params_lcs_aesth_curr_specif_hyp7 %>% filter(term=="d_aesth_1 ~ sa07_14_t1"),
  params_lcs_aesth_curr_frequ_hyp7 %>% filter(term=="d_aesth_1 ~ frequ"),
  params_lcs_imagi_curr_specif_hyp7 %>% filter(term=="d_imagi_1 ~ sa07_15_t1"),
  params_lcs_imagi_curr_frequ_hyp7 %>% filter(term=="d_imagi_1 ~ frequ")
  ) %>% 
  mutate(trait = rep(names(b5_vars), each=2),
         moderator = rep(c("goals", "frequency"), 20)) %>% 
  select(trait, moderator, estimate, conf.low, conf.high, std.all, statistic, p.value)

df_table_hyp7_plot_curr <- df_table_hyp7_plot_curr %>% 
  mutate(include_0 = ifelse(conf.low < 0 & conf.high > 0, "n.s.", "*")) %>% 
  mutate(ref = factor("current", levels = c("current"), labels = c("current"))) %>% 
  mutate(moderator = factor(moderator, levels = c("goals", "frequency"), labels = c("goals", "frequency"))) %>% 
  mutate(trait = factor(trait, levels = names(b5_vars), labels = names(b5_vars)))

Plotting the effect size across all analyses:

  • current = current-level personality
  • goals = specific, facet-level acceptance goal(s) as moderator
  • frequency = frequency of self-acceptance behavior as moderator
Show the code
ggplot(df_table_hyp7_plot_curr, aes(x = fct_rev(trait), y = estimate, color = include_0)) +
  geom_hline(yintercept=0, linetype = 3) +
  geom_point(size=3, position=position_dodge(0.4)) + 
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color = include_0), width=.2, position=position_dodge(0.4)) +
  scale_color_manual(values = c("#000000","#A9A9A9")) +   
  facet_wrap( ~ ref + moderator, ncol = 2) +
  theme_bw() +
  scale_shape_manual(values=c(18)) + 
  ylab("Effect Estimates (95% CI)") +
  xlab("") +
  theme(legend.title=element_blank()) +
  theme(legend.text=element_text(size=12)) +
  coord_flip() +
  theme(strip.text.x = element_text(size = 12)) +
  theme(axis.text.x=element_text(size=10, angle = 45, hjust = 1), axis.text.y=element_text(size=12)) + 
  guides(color="none")


6.8 Differences in change across experimental groups (Hyp 6 in paper)

Change in psychological well-being indicators as well as the difference between real- and ideal-self will differ across groups at follow-up. Based on exploratory results from Study 1, we expect that the self-acceptance intervention leads to more pronounced well-being gains and less pronounced differences between current- and ideal-self personality compared to the self-improvement intervention.

6.8.1 Well-being change: differences across groups

6.8.1.1 Life satisfaction

Life satisfaction: fitting multi-group models

Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)

# configural invariance
mi_lcs_swls_group_config <- '
swls_t1 =~ 1*sw06_01_t1 + c("lamb2a", "lamb2b")*sw06_02_t1 + c("lamb3a", "lamb3b")*sw06_03_t1 + c("lamb4a", "lamb4b")*sw06_04_t1 # This specifies the measurement model for swls_t1 
swls_t2 =~ 1*sw06_01_t2 + c("lamb2a", "lamb2b")*sw06_02_t2 + c("lamb3a", "lamb3b")*sw06_03_t2 + c("lamb4a", "lamb4b")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadings

swls_t2 ~ 1*swls_t1     # This parameter regresses swls_t2 perfectly on swls_t1
d_swls_1 =~ 1*swls_t2   # This defines the latent change score factor as measured perfectly by scores on swls_t2
swls_t2 ~ 0*1           # This line constrains the intercept of swls_t2 to 0
swls_t2 ~~ 0*swls_t2    # This fixes the variance of swls_t2 to 0

d_swls_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
swls_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of swls_t1 
d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1   # This estimates the variance of the change scores 
swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1     # This estimates the variance of the swls_t1 
d_swls_1 ~ c("fb_a", "fb_b")*swls_t1     # This estimates the self-feedback parameter

sw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2   # This allows residual covariance on indicator X4 across T1 and T2

sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1   # This allows residual variance on indicator X1 at T1 
sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1   # This allows residual variance on indicator X2 at T1
sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1   # This allows residual variance on indicator X3 at T1
sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1   # This allows residual variance on indicator X4 at T1

sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2  # This allows residual variance on indicator X1 at T2 
sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2  # This allows residual variance on indicator X2 at T2 
sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2  # This allows residual variance on indicator X3 at T2
sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2  # This allows residual variance on indicator X4 at T2

sw06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
sw06_03_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1
sw06_04_t1 ~ c("m4a", "m4b")*1     # This estimates the intercept of X4 at T1

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
sw06_03_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
sw06_04_t2 ~ c("m4a", "m4b")*1     # This estimates the intercept of X4 at T2
'
lcs_swls_group_config <- sem(mi_lcs_swls_group_config, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', 
                             fixed.x=FALSE, missing='fiml', group = "rando")

# weak invariance
mi_lcs_swls_group_weak <- '
swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 
swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadings

swls_t2 ~ 1*swls_t1     # This parameter regresses swls_t2 perfectly on swls_t1
d_swls_1 =~ 1*swls_t2   # This defines the latent change score factor as measured perfectly by scores on swls_t2
swls_t2 ~ 0*1           # This line constrains the intercept of swls_t2 to 0
swls_t2 ~~ 0*swls_t2    # This fixes the variance of swls_t2 to 0

d_swls_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
swls_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of swls_t1 
d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1   # This estimates the variance of the change scores 
swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1     # This estimates the variance of the swls_t1 
d_swls_1 ~ c("fb_a", "fb_b")*swls_t1     # This estimates the self-feedback parameter

sw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2   # This allows residual covariance on indicator X4 across T1 and T2

sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1   # This allows residual variance on indicator X1 at T1 
sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1   # This allows residual variance on indicator X2 at T1
sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1   # This allows residual variance on indicator X3 at T1
sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1   # This allows residual variance on indicator X4 at T1

sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2  # This allows residual variance on indicator X1 at T2 
sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2  # This allows residual variance on indicator X2 at T2 
sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2  # This allows residual variance on indicator X3 at T2
sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2  # This allows residual variance on indicator X4 at T2

sw06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
sw06_03_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1
sw06_04_t1 ~ c("m4a", "m4b")*1     # This estimates the intercept of X4 at T1

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
sw06_03_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
sw06_04_t2 ~ c("m4a", "m4b")*1     # This estimates the intercept of X4 at T2
'

lcs_swls_group_weak <- sem(mi_lcs_swls_group_weak, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                           group = "rando", group.equal = "loadings")

# strong invariance
mi_lcs_swls_group_strong <- '
swls_t1 =~ 1*sw06_01_t1 + c("lamb2", "lamb2")*sw06_02_t1 + c("lamb3", "lamb3")*sw06_03_t1 + c("lamb4", "lamb4")*sw06_04_t1 # This specifies the measurement model for swls_t1 
swls_t2 =~ 1*sw06_01_t2 + c("lamb2", "lamb2")*sw06_02_t2 + c("lamb3", "lamb3")*sw06_03_t2 + c("lamb4", "lamb4")*sw06_04_t2 # This specifies the measurement model for swls_t2 with the equality constrained factor loadings

swls_t2 ~ 1*swls_t1     # This parameter regresses swls_t2 perfectly on swls_t1
d_swls_1 =~ 1*swls_t2   # This defines the latent change score factor as measured perfectly by scores on swls_t2
swls_t2 ~ 0*1           # This line constrains the intercept of swls_t2 to 0
swls_t2 ~~ 0*swls_t2    # This fixes the variance of swls_t2 to 0

d_swls_1 ~ c("d_int", "d_int")*1           # This estimates the intercept of the change score 
swls_t1 ~ c("wb_int", "wb_int")*1            # This estimates the intercept of swls_t1 
d_swls_1 ~~ c("d_var_a", "d_var_b")*d_swls_1   # This estimates the variance of the change scores 
swls_t1 ~~ c("wb_var_a", "wb_var_b")*swls_t1     # This estimates the variance of the swls_t1 
d_swls_1 ~ c("fb_a", "fb_b")*swls_t1     # This estimates the self-feedback parameter

sw06_01_t1 ~~ c("cov1a", "cov1b")*sw06_01_t2   # This allows residual covariance on indicator X1 across T1 and T2
sw06_02_t1 ~~ c("cov2a", "cov2b")*sw06_02_t2   # This allows residual covariance on indicator X2 across T1 and T2
sw06_03_t1 ~~ c("cov3a", "cov3b")*sw06_03_t2   # This allows residual covariance on indicator X3 across T1 and T2
sw06_04_t1 ~~ c("cov4a", "cov4b")*sw06_04_t2   # This allows residual covariance on indicator X4 across T1 and T2

sw06_01_t1 ~~ c("res1a", "res1b")*sw06_01_t1   # This allows residual variance on indicator X1 at T1 
sw06_02_t1 ~~ c("res2a", "res2b")*sw06_02_t1   # This allows residual variance on indicator X2 at T1
sw06_03_t1 ~~ c("res3a", "res3b")*sw06_03_t1   # This allows residual variance on indicator X3 at T1
sw06_04_t1 ~~ c("res4a", "res4b")*sw06_04_t1   # This allows residual variance on indicator X4 at T1

sw06_01_t2 ~~ c("res1a", "res1b")*sw06_01_t2  # This allows residual variance on indicator X1 at T2 
sw06_02_t2 ~~ c("res2a", "res2b")*sw06_02_t2  # This allows residual variance on indicator X2 at T2 
sw06_03_t2 ~~ c("res3a", "res3b")*sw06_03_t2  # This allows residual variance on indicator X3 at T2
sw06_04_t2 ~~ c("res4a", "res4b")*sw06_04_t2  # This allows residual variance on indicator X4 at T2

sw06_01_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
sw06_02_t1 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T1
sw06_03_t1 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T1
sw06_04_t1 ~ c("m4", "m4")*1     # This estimates the intercept of X4 at T1

sw06_01_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
sw06_02_t2 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T2
sw06_03_t2 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T2
sw06_04_t2 ~ c("m4", "m4")*1     # This estimates the intercept of X4 at T2
'

lcs_swls_group_strong <- sem(mi_lcs_swls_group_strong, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                             group = "rando", group.equal = c("intercepts", "loadings"))

Life satisfaction: results

# model comparison tests for measurement invariance
lavTestLRT(lcs_swls_group_config, lcs_swls_group_weak, lcs_swls_group_strong)

Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")

lavaan NOTE:
    The "Chisq" column contains standard test statistics, not the
    robust test that should be reported per model. A robust difference
    test is a function of two standard (not robust) statistics.
 
                      Df   AIC   BIC  Chisq Chisq diff Df diff Pr(>Chisq)  
lcs_swls_group_config 50 13077 13248 125.00                                
lcs_swls_group_weak   53 13073 13231 127.59     3.1604       3    0.36755  
lcs_swls_group_strong 58 13073 13208 137.46     9.9114       5    0.07779 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# show model with varying latent change parameters 
# -> key parameter is "d_swls_1 ~1"
# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)
kable(broom::tidy(lcs_swls_group_weak, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_swls_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_swls_1 ~1 d_int_a 0.559 0.952 4.360 0
d_swls_1 ~1 d_int_b 1.054 1.477 6.972 0
# constrained to be equal in the strong measurement invariance model:
kable(broom::tidy(lcs_swls_group_strong, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_swls_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_swls_1 ~1 d_int 0.799 1.281 7.851 0
d_swls_1 ~1 d_int 0.799 1.173 7.851 0

Slightly more positive change in life satisfaction in the Self-Acceptance group but no substantial differences according to the LRTs.

# whole model (weak invariance)
summary(lcs_swls_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
lavaan 0.6.15 ended normally after 59 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        58
  Number of equality constraints                    23

  Number of observations per group:               Used       Total
    Self-Acceptance                                336         336
    Self-Improvement                               337         338
  Number of missing patterns per group:                           
    Self-Acceptance                                  2            
    Self-Improvement                                 2            

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                               127.587     114.982
  Degrees of freedom                                53          53
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  1.110
    Yuan-Bentler correction (Mplus variant)                       
  Test statistic for each group:
    Self-Acceptance                             68.718      61.929
    Self-Improvement                            58.869      53.053

Model Test Baseline Model:

  Test statistic                              3183.172    2343.602
  Degrees of freedom                                56          56
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.358

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.976       0.973
  Tucker-Lewis Index (TLI)                       0.975       0.971
                                                                  
  Robust Comparative Fit Index (CFI)                         0.978
  Robust Tucker-Lewis Index (TLI)                            0.977

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6501.579   -6501.579
  Scaling correction factor                                  0.703
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)      -6437.786   -6437.786
  Scaling correction factor                                  1.132
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               13073.158   13073.158
  Bayesian (BIC)                             13231.070   13231.070
  Sample-size adjusted Bayesian (SABIC)      13119.942   13119.942

Root Mean Square Error of Approximation:

  RMSEA                                          0.065       0.059
  90 Percent confidence interval - lower         0.050       0.045
  90 Percent confidence interval - upper         0.079       0.073
  P-value H_0: RMSEA <= 0.050                    0.046       0.140
  P-value H_0: RMSEA >= 0.080                    0.040       0.006
                                                                  
  Robust RMSEA                                               0.065
  90 Percent confidence interval - lower                     0.048
  90 Percent confidence interval - upper                     0.082
  P-value H_0: Robust RMSEA <= 0.050                         0.073
  P-value H_0: Robust RMSEA >= 0.080                         0.068

Standardized Root Mean Square Residual:

  SRMR                                           0.035       0.035

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian


Group 1 [Self-Acceptance]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  swls_t1 =~                                                            
    s06_01_           1.000                               0.993    0.839
    s06_02_ (lmb2)    0.885    0.029   30.812    0.000    0.879    0.775
    s06_03_ (lmb3)    1.038    0.031   33.314    0.000    1.031    0.858
    s06_04_ (lmb4)    0.909    0.031   29.375    0.000    0.903    0.721
  swls_t2 =~                                                            
    s06_01_           1.000                               1.052    0.853
    s06_02_ (lmb2)    0.885    0.029   30.812    0.000    0.931    0.793
    s06_03_ (lmb3)    1.038    0.031   33.314    0.000    1.092    0.870
    s06_04_ (lmb4)    0.909    0.031   29.375    0.000    0.956    0.741
  d_swls_1 =~                                                           
    swls_t2           1.000                               0.559    0.559

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  swls_t2 ~                                                             
    swls_t1           1.000                               0.944    0.944
  d_swls_1 ~                                                            
    swls_t1 (fb_a)   -0.114    0.040   -2.881    0.004   -0.193   -0.193

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .sw06_01_t1 ~~                                                         
   .s06_01_ (cov1)    0.050    0.044    1.136    0.256    0.050    0.121
 .sw06_02_t1 ~~                                                         
   .s06_02_ (cov2)    0.210    0.043    4.924    0.000    0.210    0.408
 .sw06_03_t1 ~~                                                         
   .s06_03_ (cov3)    0.034    0.040    0.859    0.390    0.034    0.089
 .sw06_04_t1 ~~                                                         
   .s06_04_ (cov4)    0.289    0.064    4.514    0.000    0.289    0.384

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .swls_t2           0.000                               0.000    0.000
   .d_swl_1 (d_n_)    0.559    0.128    4.360    0.000    0.952    0.952
    swls_t1 (wb__)    2.742    0.062   43.993    0.000    2.761    2.761
   .s06_01_           0.000                               0.000    0.000
   .s06_02_  (m2a)    0.499    0.098    5.078    0.000    0.499    0.440
   .s06_03_  (m3a)    0.025    0.102    0.250    0.803    0.025    0.021
   .s06_04_  (m4a)    0.420    0.103    4.096    0.000    0.420    0.336
   .s06_01_           0.000                               0.000    0.000
   .s06_02_  (m2a)    0.499    0.098    5.078    0.000    0.499    0.425
   .s06_03_  (m3a)    0.025    0.102    0.250    0.803    0.025    0.020
   .s06_04_  (m4a)    0.420    0.103    4.096    0.000    0.420    0.326

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .swls_t2           0.000                               0.000    0.000
   .d_swl_1 (d_v_)    0.332    0.053    6.308    0.000    0.963    0.963
    swls_t1 (wb__)    0.986    0.075   13.185    0.000    1.000    1.000
   .s06_01_ (res1)    0.414    0.044    9.393    0.000    0.414    0.296
   .s06_02_ (res2)    0.513    0.040   12.737    0.000    0.513    0.399
   .s06_03_ (res3)    0.381    0.038   10.087    0.000    0.381    0.264
   .s06_04_ (res4)    0.752    0.061   12.251    0.000    0.752    0.480
   .s06_01_ (res1)    0.414    0.044    9.393    0.000    0.414    0.272
   .s06_02_ (res2)    0.513    0.040   12.737    0.000    0.513    0.372
   .s06_03_ (res3)    0.381    0.038   10.087    0.000    0.381    0.242
   .s06_04_ (res4)    0.752    0.061   12.251    0.000    0.752    0.451


Group 2 [Self-Improvement]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  swls_t1 =~                                                            
    s06_01_           1.000                               0.982    0.815
    s06_02_ (lmb2)    0.885    0.029   30.812    0.000    0.869    0.739
    s06_03_ (lmb3)    1.038    0.031   33.314    0.000    1.019    0.851
    s06_04_ (lmb4)    0.909    0.031   29.375    0.000    0.892    0.706
  swls_t2 =~                                                            
    s06_01_           1.000                               0.958    0.809
    s06_02_ (lmb2)    0.885    0.029   30.812    0.000    0.848    0.731
    s06_03_ (lmb3)    1.038    0.031   33.314    0.000    0.994    0.845
    s06_04_ (lmb4)    0.909    0.031   29.375    0.000    0.871    0.697
  d_swls_1 =~                                                           
    swls_t2           1.000                               0.745    0.745

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  swls_t2 ~                                                             
    swls_t1           1.000                               1.025    1.025
  d_swls_1 ~                                                            
    swls_t1 (fb_b)   -0.288    0.053   -5.463    0.000   -0.397   -0.397

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .sw06_01_t1 ~~                                                         
   .s06_01_ (cv1b)    0.132    0.044    2.974    0.003    0.132    0.272
 .sw06_02_t1 ~~                                                         
   .s06_02_ (cv2b)    0.297    0.057    5.231    0.000    0.297    0.474
 .sw06_03_t1 ~~                                                         
   .s06_03_ (cv3b)    0.068    0.043    1.582    0.114    0.068    0.173
 .sw06_04_t1 ~~                                                         
   .s06_04_ (cv4b)    0.320    0.066    4.823    0.000    0.320    0.400

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .swls_t2           0.000                               0.000    0.000
   .d_swl_1 (d_n_)    1.054    0.151    6.972    0.000    1.477    1.477
    swls_t1 (wb__)    2.629    0.063   41.512    0.000    2.679    2.679
   .s06_01_           0.000                               0.000    0.000
   .s06_02_  (m2b)    0.533    0.094    5.691    0.000    0.533    0.453
   .s06_03_  (m3b)    0.106    0.098    1.088    0.277    0.106    0.089
   .s06_04_  (m4b)    0.429    0.102    4.202    0.000    0.429    0.339
   .s06_01_           0.000                               0.000    0.000
   .s06_02_  (m2b)    0.533    0.094    5.691    0.000    0.533    0.459
   .s06_03_  (m3b)    0.106    0.098    1.088    0.277    0.106    0.090
   .s06_04_  (m4b)    0.429    0.102    4.202    0.000    0.429    0.344

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .swls_t2           0.000                               0.000    0.000
   .d_swl_1 (d_v_)    0.429    0.060    7.101    0.000    0.843    0.843
    swls_t1 (wb__)    0.963    0.075   12.868    0.000    1.000    1.000
   .s06_01_ (rs1b)    0.485    0.050    9.762    0.000    0.485    0.335
   .s06_02_ (rs2b)    0.627    0.056   11.267    0.000    0.627    0.454
   .s06_03_ (rs3b)    0.395    0.039   10.203    0.000    0.395    0.276
   .s06_04_ (rs4b)    0.800    0.063   12.669    0.000    0.800    0.501
   .s06_01_ (rs1b)    0.485    0.050    9.762    0.000    0.485    0.346
   .s06_02_ (rs2b)    0.627    0.056   11.267    0.000    0.627    0.466
   .s06_03_ (rs3b)    0.395    0.039   10.203    0.000    0.395    0.286
   .s06_04_ (rs4b)    0.800    0.063   12.669    0.000    0.800    0.514
6.8.1.2 Meaning in life

Meaning in life: fitting multi-group models

Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)

# configural invariance
mi_lcs_meaning_group_config <- '
meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2a", "lamb2b")*meaning_par2_t1 + c("lamb3a", "lamb3b")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 
meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2a", "lamb2b")*meaning_par2_t2 + c("lamb3a", "lamb3b")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadings

meaning_t2 ~ 1*meaning_t1     # This parameter regresses meaning_t2 perfectly on meaning_t1
d_meaning_1 =~ 1*meaning_t2   # This defines the latent change score factor as measured perfectly by scores on meaning_t2
meaning_t2 ~ 0*1           # This line constrains the intercept of meaning_t2 to 0
meaning_t2 ~~ 0*meaning_t2    # This fixes the variance of meaning_t2 to 0

d_meaning_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
meaning_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of meaning_t1 
d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1   # This estimates the variance of the change scores 
meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1     # This estimates the variance of the meaning_t1 
d_meaning_1 ~ c("fb_a", "fb_b")*meaning_t1     # This estimates the self-feedback parameter

meaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1   # This allows residual variance on indicator X1 at T1 
meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1   # This allows residual variance on indicator X2 at T1
meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1   # This allows residual variance on indicator X3 at T1

meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2  # This allows residual variance on indicator X1 at T2 
meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2  # This allows residual variance on indicator X2 at T2 
meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2  # This allows residual variance on indicator X3 at T2

meaning_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
meaning_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
meaning_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

meaning_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
meaning_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
meaning_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'
lcs_meaning_group_config <- sem(mi_lcs_meaning_group_config, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', 
                                fixed.x=FALSE, missing='fiml', group = "rando")

# weak invariance
mi_lcs_meaning_group_weak <- '
meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 
meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadings

meaning_t2 ~ 1*meaning_t1     # This parameter regresses meaning_t2 perfectly on meaning_t1
d_meaning_1 =~ 1*meaning_t2   # This defines the latent change score factor as measured perfectly by scores on meaning_t2
meaning_t2 ~ 0*1           # This line constrains the intercept of meaning_t2 to 0
meaning_t2 ~~ 0*meaning_t2    # This fixes the variance of meaning_t2 to 0

d_meaning_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
meaning_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of meaning_t1 
d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1   # This estimates the variance of the change scores 
meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1     # This estimates the variance of the meaning_t1 
d_meaning_1 ~ c("fb_a", "fb_b")*meaning_t1     # This estimates the self-feedback parameter

meaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1   # This allows residual variance on indicator X1 at T1 
meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1   # This allows residual variance on indicator X2 at T1
meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1   # This allows residual variance on indicator X3 at T1

meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2  # This allows residual variance on indicator X1 at T2 
meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2  # This allows residual variance on indicator X2 at T2 
meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2  # This allows residual variance on indicator X3 at T2

meaning_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
meaning_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
meaning_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

meaning_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
meaning_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
meaning_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'

lcs_meaning_group_weak <- sem(mi_lcs_meaning_group_weak, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                           group = "rando", group.equal = "loadings")

# strong invariance
mi_lcs_meaning_group_strong <- '
meaning_t1 =~ 1*meaning_par1_t1 + c("lamb2", "lamb2")*meaning_par2_t1 + c("lamb3", "lamb3")*meaning_par3_t1 # This specifies the measurement model for meaning_t1 
meaning_t2 =~ 1*meaning_par1_t2 + c("lamb2", "lamb2")*meaning_par2_t2 + c("lamb3", "lamb3")*meaning_par3_t2 # This specifies the measurement model for meaning_t2 with the equality constrained factor loadings

meaning_t2 ~ 1*meaning_t1     # This parameter regresses meaning_t2 perfectly on meaning_t1
d_meaning_1 =~ 1*meaning_t2   # This defines the latent change score factor as measured perfectly by scores on meaning_t2
meaning_t2 ~ 0*1           # This line constrains the intercept of meaning_t2 to 0
meaning_t2 ~~ 0*meaning_t2    # This fixes the variance of meaning_t2 to 0

d_meaning_1 ~ c("d_int", "d_int")*1           # This estimates the intercept of the change score 
meaning_t1 ~ c("wb_int", "wb_int")*1            # This estimates the intercept of meaning_t1 
d_meaning_1 ~~ c("d_var_a", "d_var_b")*d_meaning_1   # This estimates the variance of the change scores 
meaning_t1 ~~ c("wb_var_a", "wb_var_b")*meaning_t1     # This estimates the variance of the meaning_t1 
d_meaning_1 ~ c("fb_a", "fb_b")*meaning_t1     # This estimates the self-feedback parameter

meaning_par1_t1 ~~ c("cov1a", "cov1b")*meaning_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
meaning_par2_t1 ~~ c("cov2a", "cov2b")*meaning_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
meaning_par3_t1 ~~ c("cov3a", "cov3b")*meaning_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

meaning_par1_t1 ~~ c("res1a", "res1b")*meaning_par1_t1   # This allows residual variance on indicator X1 at T1 
meaning_par2_t1 ~~ c("res2a", "res2b")*meaning_par2_t1   # This allows residual variance on indicator X2 at T1
meaning_par3_t1 ~~ c("res3a", "res3b")*meaning_par3_t1   # This allows residual variance on indicator X3 at T1

meaning_par1_t2 ~~ c("res1a", "res1b")*meaning_par1_t2  # This allows residual variance on indicator X1 at T2 
meaning_par2_t2 ~~ c("res2a", "res2b")*meaning_par2_t2  # This allows residual variance on indicator X2 at T2 
meaning_par3_t2 ~~ c("res3a", "res3b")*meaning_par3_t2  # This allows residual variance on indicator X3 at T2

meaning_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
meaning_par2_t1 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T1
meaning_par3_t1 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T1

meaning_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
meaning_par2_t2 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T2
meaning_par3_t2 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T2
'

lcs_meaning_group_strong <- sem(mi_lcs_meaning_group_strong, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                             group = "rando", group.equal = c("intercepts", "loadings"))

Meaning in life: results

# model comparison tests for measurement invariance
lavTestLRT(lcs_meaning_group_config, lcs_meaning_group_weak, lcs_meaning_group_strong)

Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")

lavaan NOTE:
    The "Chisq" column contains standard test statistics, not the
    robust test that should be reported per model. A robust difference
    test is a function of two standard (not robust) statistics.
 
                         Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)
lcs_meaning_group_config 24 9552.9 9688.3 49.776                              
lcs_meaning_group_weak   26 9550.4 9676.8 51.287     1.5699       2     0.4561
lcs_meaning_group_strong 30 9544.3 9652.5 53.131     1.7531       4     0.7810
# show model with varying latent change parameters 
# -> key parameter is "d_meaning_1 ~1"
# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)
kable(broom::tidy(lcs_meaning_group_weak, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_meaning_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_meaning_1 ~1 d_int_a 0.931 1.522 6.622 0
d_meaning_1 ~1 d_int_b 1.129 1.564 6.169 0
# constrained to be equal in the strong measurement invariance model:
kable(broom::tidy(lcs_meaning_group_strong, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_meaning_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_meaning_1 ~1 d_int 1.01 1.620 8.933 0
d_meaning_1 ~1 d_int 1.01 1.426 8.933 0

Slightly more positive change in meaning in life in the Self-Improvement group but no substantial differences according to the LRTs.

# whole model (weak invariance)
summary(lcs_meaning_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
lavaan 0.6.15 ended normally after 63 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        44
  Number of equality constraints                    16

  Number of observations per group:               Used       Total
    Self-Acceptance                                336         336
    Self-Improvement                               337         338
  Number of missing patterns per group:                           
    Self-Acceptance                                  2            
    Self-Improvement                                 2            

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                                51.287      46.282
  Degrees of freedom                                26          26
  P-value (Chi-square)                           0.002       0.008
  Scaling correction factor                                  1.108
    Yuan-Bentler correction (Mplus variant)                       
  Test statistic for each group:
    Self-Acceptance                             29.436      26.563
    Self-Improvement                            21.851      19.719

Model Test Baseline Model:

  Test statistic                              2949.985    2233.784
  Degrees of freedom                                30          30
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.321

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.991       0.991
  Tucker-Lewis Index (TLI)                       0.990       0.989
                                                                  
  Robust Comparative Fit Index (CFI)                         0.992
  Robust Tucker-Lewis Index (TLI)                            0.990

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -4747.211   -4747.211
  Scaling correction factor                                  0.749
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)      -4721.568   -4721.568
  Scaling correction factor                                  1.144
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                                9550.422    9550.422
  Bayesian (BIC)                              9676.751    9676.751
  Sample-size adjusted Bayesian (SABIC)       9587.848    9587.848

Root Mean Square Error of Approximation:

  RMSEA                                          0.054       0.048
  90 Percent confidence interval - lower         0.032       0.026
  90 Percent confidence interval - upper         0.075       0.069
  P-value H_0: RMSEA <= 0.050                    0.361       0.529
  P-value H_0: RMSEA >= 0.080                    0.021       0.005
                                                                  
  Robust RMSEA                                               0.055
  90 Percent confidence interval - lower                     0.028
  90 Percent confidence interval - upper                     0.080
  P-value H_0: Robust RMSEA <= 0.050                         0.351
  P-value H_0: Robust RMSEA >= 0.080                         0.047

Standardized Root Mean Square Residual:

  SRMR                                           0.033       0.033

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian


Group 1 [Self-Acceptance]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  meaning_t1 =~                                                         
    mnn_1_1           1.000                               1.002    0.814
    mnn_2_1 (lmb2)    1.201    0.035   34.437    0.000    1.204    0.929
    mnn_3_1 (lmb3)    1.168    0.035   33.501    0.000    1.170    0.885
  meaning_t2 =~                                                         
    mnn_1_2           1.000                               0.958    0.802
    mnn_2_2 (lmb2)    1.201    0.035   34.437    0.000    1.151    0.923
    mnn_3_2 (lmb3)    1.168    0.035   33.501    0.000    1.119    0.877
  d_meaning_1 =~                                                        
    mnng_t2           1.000                               0.638    0.638

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  meaning_t2 ~                                                          
    mnng_t1           1.000                               1.045    1.045
  d_meaning_1 ~                                                         
    mnng_t1 (fb_a)   -0.229    0.040   -5.730    0.000   -0.375   -0.375

Covariances:
                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .meaning_par1_t1 ~~                                                      
   .mnn_1_2 (cov1)      0.207    0.043    4.842    0.000    0.207    0.406
 .meaning_par2_t1 ~~                                                      
   .mnn_2_2 (cov2)      0.027    0.033    0.830    0.407    0.027    0.118
 .meaning_par3_t1 ~~                                                      
   .mnn_3_2 (cov3)      0.153    0.038    4.081    0.000    0.153    0.406

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .mnng_t2           0.000                               0.000    0.000
   .d_mnn_1 (d_n_)    0.931    0.141    6.622    0.000    1.522    1.522
    mnng_t1 (wb__)    3.210    0.064   50.291    0.000    3.204    3.204
   .mnn_1_1           0.000                               0.000    0.000
   .mnn_2_1  (m2a)   -0.048    0.121   -0.393    0.695   -0.048   -0.037
   .mnn_3_1  (m3a)   -0.116    0.118   -0.985    0.324   -0.116   -0.088
   .mnn_1_2           0.000                               0.000    0.000
   .mnn_2_2  (m2a)   -0.048    0.121   -0.393    0.695   -0.048   -0.038
   .mnn_3_2  (m3a)   -0.116    0.118   -0.985    0.324   -0.116   -0.091

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .mnng_t2           0.000                               0.000    0.000
   .d_mnn_1 (d_v_)    0.322    0.057    5.676    0.000    0.859    0.859
    mnng_t1 (wb__)    1.004    0.096   10.450    0.000    1.000    1.000
   .mnn_1_1 (res1)    0.510    0.040   12.813    0.000    0.510    0.337
   .mnn_2_1 (res2)    0.230    0.035    6.582    0.000    0.230    0.137
   .mnn_3_1 (res3)    0.377    0.038    9.898    0.000    0.377    0.216
   .mnn_1_2 (res1)    0.510    0.040   12.813    0.000    0.510    0.357
   .mnn_2_2 (res2)    0.230    0.035    6.582    0.000    0.230    0.148
   .mnn_3_2 (res3)    0.377    0.038    9.898    0.000    0.377    0.232


Group 2 [Self-Improvement]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  meaning_t1 =~                                                         
    mnn_1_1           1.000                               0.951    0.786
    mnn_2_1 (lmb2)    1.201    0.035   34.437    0.000    1.142    0.902
    mnn_3_1 (lmb3)    1.168    0.035   33.501    0.000    1.110    0.854
  meaning_t2 =~                                                         
    mnn_1_2           1.000                               0.958    0.788
    mnn_2_2 (lmb2)    1.201    0.035   34.437    0.000    1.151    0.903
    mnn_3_2 (lmb3)    1.168    0.035   33.501    0.000    1.119    0.856
  d_meaning_1 =~                                                        
    mnng_t2           1.000                               0.753    0.753

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  meaning_t2 ~                                                          
    mnng_t1           1.000                               0.992    0.992
  d_meaning_1 ~                                                         
    mnng_t1 (fb_b)   -0.280    0.052   -5.401    0.000   -0.369   -0.369

Covariances:
                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .meaning_par1_t1 ~~                                                      
   .mnn_1_2 (cv1b)      0.281    0.044    6.434    0.000    0.281    0.502
 .meaning_par2_t1 ~~                                                      
   .mnn_2_2 (cv2b)      0.076    0.040    1.920    0.055    0.076    0.253
 .meaning_par3_t1 ~~                                                      
   .mnn_3_2 (cv3b)      0.137    0.048    2.881    0.004    0.137    0.300

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .mnng_t2           0.000                               0.000    0.000
   .d_mnn_1 (d_n_)    1.129    0.183    6.169    0.000    1.564    1.564
    mnng_t1 (wb__)    3.206    0.060   53.091    0.000    3.371    3.371
   .mnn_1_1           0.000                               0.000    0.000
   .mnn_2_1  (m2b)   -0.036    0.123   -0.289    0.772   -0.036   -0.028
   .mnn_3_1  (m3b)   -0.061    0.122   -0.504    0.615   -0.061   -0.047
   .mnn_1_2           0.000                               0.000    0.000
   .mnn_2_2  (m2b)   -0.036    0.123   -0.289    0.772   -0.036   -0.028
   .mnn_3_2  (m3b)   -0.061    0.122   -0.504    0.615   -0.061   -0.047

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .mnng_t2           0.000                               0.000    0.000
   .d_mnn_1 (d_v_)    0.450    0.062    7.306    0.000    0.864    0.864
    mnng_t1 (wb__)    0.904    0.085   10.690    0.000    1.000    1.000
   .mnn_1_1 (rs1b)    0.560    0.045   12.505    0.000    0.560    0.382
   .mnn_2_1 (rs2b)    0.300    0.038    7.806    0.000    0.300    0.187
   .mnn_3_1 (rs3b)    0.458    0.049    9.323    0.000    0.458    0.271
   .mnn_1_2 (rs1b)    0.560    0.045   12.505    0.000    0.560    0.379
   .mnn_2_2 (rs2b)    0.300    0.038    7.806    0.000    0.300    0.185
   .mnn_3_2 (rs3b)    0.458    0.049    9.323    0.000    0.458    0.268
6.8.1.3 Self-esteem

Self-esteem: fitting multi-group models

Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)

# configural invariance
mi_lcs_selfes_group_config <- '
selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2a", "lamb2b")*selfes_par2_t1 + c("lamb3a", "lamb3b")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 
selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2a", "lamb2b")*selfes_par2_t2 + c("lamb3a", "lamb3b")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadings

selfes_t2 ~ 1*selfes_t1     # This parameter regresses selfes_t2 perfectly on selfes_t1
d_selfes_1 =~ 1*selfes_t2   # This defines the latent change score factor as measured perfectly by scores on selfes_t2
selfes_t2 ~ 0*1           # This line constrains the intercept of selfes_t2 to 0
selfes_t2 ~~ 0*selfes_t2    # This fixes the variance of selfes_t2 to 0

d_selfes_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
selfes_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of selfes_t1 
d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1   # This estimates the variance of the change scores 
selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1     # This estimates the variance of the selfes_t1 
d_selfes_1 ~ c("fb_a", "fb_b")*selfes_t1     # This estimates the self-feedback parameter

selfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1   # This allows residual variance on indicator X1 at T1 
selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1   # This allows residual variance on indicator X2 at T1
selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1   # This allows residual variance on indicator X3 at T1

selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2  # This allows residual variance on indicator X1 at T2 
selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2  # This allows residual variance on indicator X2 at T2 
selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2  # This allows residual variance on indicator X3 at T2

selfes_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
selfes_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
selfes_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

selfes_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
selfes_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
selfes_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'
lcs_selfes_group_config <- sem(mi_lcs_selfes_group_config, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', 
                                fixed.x=FALSE, missing='fiml', group = "rando")

# weak invariance
mi_lcs_selfes_group_weak <- '
selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 
selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadings

selfes_t2 ~ 1*selfes_t1     # This parameter regresses selfes_t2 perfectly on selfes_t1
d_selfes_1 =~ 1*selfes_t2   # This defines the latent change score factor as measured perfectly by scores on selfes_t2
selfes_t2 ~ 0*1           # This line constrains the intercept of selfes_t2 to 0
selfes_t2 ~~ 0*selfes_t2    # This fixes the variance of selfes_t2 to 0

d_selfes_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
selfes_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of selfes_t1 
d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1   # This estimates the variance of the change scores 
selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1     # This estimates the variance of the selfes_t1 
d_selfes_1 ~ c("fb_a", "fb_b")*selfes_t1     # This estimates the self-feedback parameter

selfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1   # This allows residual variance on indicator X1 at T1 
selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1   # This allows residual variance on indicator X2 at T1
selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1   # This allows residual variance on indicator X3 at T1

selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2  # This allows residual variance on indicator X1 at T2 
selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2  # This allows residual variance on indicator X2 at T2 
selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2  # This allows residual variance on indicator X3 at T2

selfes_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
selfes_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
selfes_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

selfes_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
selfes_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
selfes_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'

lcs_selfes_group_weak <- sem(mi_lcs_selfes_group_weak, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                           group = "rando", group.equal = "loadings")

# strong invariance
mi_lcs_selfes_group_strong <- '
selfes_t1 =~ 1*selfes_par1_t1 + c("lamb2", "lamb2")*selfes_par2_t1 + c("lamb3", "lamb3")*selfes_par3_t1 # This specifies the measurement model for selfes_t1 
selfes_t2 =~ 1*selfes_par1_t2 + c("lamb2", "lamb2")*selfes_par2_t2 + c("lamb3", "lamb3")*selfes_par3_t2 # This specifies the measurement model for selfes_t2 with the equality constrained factor loadings

selfes_t2 ~ 1*selfes_t1     # This parameter regresses selfes_t2 perfectly on selfes_t1
d_selfes_1 =~ 1*selfes_t2   # This defines the latent change score factor as measured perfectly by scores on selfes_t2
selfes_t2 ~ 0*1           # This line constrains the intercept of selfes_t2 to 0
selfes_t2 ~~ 0*selfes_t2    # This fixes the variance of selfes_t2 to 0

d_selfes_1 ~ c("d_int", "d_int")*1           # This estimates the intercept of the change score 
selfes_t1 ~ c("wb_int", "wb_int")*1            # This estimates the intercept of selfes_t1 
d_selfes_1 ~~ c("d_var_a", "d_var_b")*d_selfes_1   # This estimates the variance of the change scores 
selfes_t1 ~~ c("wb_var_a", "wb_var_b")*selfes_t1     # This estimates the variance of the selfes_t1 
d_selfes_1 ~ c("fb_a", "fb_b")*selfes_t1     # This estimates the self-feedback parameter

selfes_par1_t1 ~~ c("cov1a", "cov1b")*selfes_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
selfes_par2_t1 ~~ c("cov2a", "cov2b")*selfes_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
selfes_par3_t1 ~~ c("cov3a", "cov3b")*selfes_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

selfes_par1_t1 ~~ c("res1a", "res1b")*selfes_par1_t1   # This allows residual variance on indicator X1 at T1 
selfes_par2_t1 ~~ c("res2a", "res2b")*selfes_par2_t1   # This allows residual variance on indicator X2 at T1
selfes_par3_t1 ~~ c("res3a", "res3b")*selfes_par3_t1   # This allows residual variance on indicator X3 at T1

selfes_par1_t2 ~~ c("res1a", "res1b")*selfes_par1_t2  # This allows residual variance on indicator X1 at T2 
selfes_par2_t2 ~~ c("res2a", "res2b")*selfes_par2_t2  # This allows residual variance on indicator X2 at T2 
selfes_par3_t2 ~~ c("res3a", "res3b")*selfes_par3_t2  # This allows residual variance on indicator X3 at T2

selfes_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
selfes_par2_t1 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T1
selfes_par3_t1 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T1

selfes_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
selfes_par2_t2 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T2
selfes_par3_t2 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T2
'

lcs_selfes_group_strong <- sem(mi_lcs_selfes_group_strong, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                             group = "rando", group.equal = c("intercepts", "loadings"))

Meaning in life: results

# model comparison tests for measurement invariance
lavTestLRT(lcs_selfes_group_config, lcs_selfes_group_weak, lcs_selfes_group_strong)

Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")

lavaan NOTE:
    The "Chisq" column contains standard test statistics, not the
    robust test that should be reported per model. A robust difference
    test is a function of two standard (not robust) statistics.
 
                        Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)
lcs_selfes_group_config 24 7216.5 7351.9 16.395                              
lcs_selfes_group_weak   26 7213.2 7339.6 17.124     0.7634       2     0.6827
lcs_selfes_group_strong 30 7212.7 7321.0 24.562     7.1744       4     0.1270
# show model with varying latent change parameters 
# -> key parameter is "d_selfes_1 ~1"
# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)
kable(broom::tidy(lcs_selfes_group_weak, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_selfes_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_selfes_1 ~1 d_int_a 0.866 1.886 5.675 0
d_selfes_1 ~1 d_int_b 1.388 2.757 8.332 0
# constrained to be equal in the strong measurement invariance model:
kable(broom::tidy(lcs_selfes_group_strong, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_selfes_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_selfes_1 ~1 d_int 1.131 2.334 9.694 0
d_selfes_1 ~1 d_int 1.131 2.356 9.694 0

Slightly more positive change in self-esteem in the Self-Acceptance group but no substantial differences according to the LRTs.

# whole model (weak invariance)
summary(lcs_selfes_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
lavaan 0.6.15 ended normally after 79 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        44
  Number of equality constraints                    16

  Number of observations per group:               Used       Total
    Self-Acceptance                                336         336
    Self-Improvement                               337         338
  Number of missing patterns per group:                           
    Self-Acceptance                                  2            
    Self-Improvement                                 2            

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                                17.124      16.149
  Degrees of freedom                                26          26
  P-value (Chi-square)                           0.905       0.933
  Scaling correction factor                                  1.060
    Yuan-Bentler correction (Mplus variant)                       
  Test statistic for each group:
    Self-Acceptance                             11.170      10.534
    Self-Improvement                             5.954       5.615

Model Test Baseline Model:

  Test statistic                              3063.748    2410.188
  Degrees of freedom                                30          30
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.271

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    1.000       1.000
  Tucker-Lewis Index (TLI)                       1.003       1.005
                                                                  
  Robust Comparative Fit Index (CFI)                         1.000
  Robust Tucker-Lewis Index (TLI)                            1.004

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -3578.624   -3578.624
  Scaling correction factor                                  0.727
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)      -3570.062   -3570.062
  Scaling correction factor                                  1.103
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                                7213.249    7213.249
  Bayesian (BIC)                              7339.578    7339.578
  Sample-size adjusted Bayesian (SABIC)       7250.675    7250.675

Root Mean Square Error of Approximation:

  RMSEA                                          0.000       0.000
  90 Percent confidence interval - lower         0.000       0.000
  90 Percent confidence interval - upper         0.018       0.010
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.000
  90 Percent confidence interval - lower                     0.000
  90 Percent confidence interval - upper                     0.014
  P-value H_0: Robust RMSEA <= 0.050                         0.999
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.024       0.024

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian


Group 1 [Self-Acceptance]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  selfes_t1 =~                                                          
    slf_1_1           1.000                               0.733    0.858
    slf_2_1 (lmb2)    1.112    0.035   32.055    0.000    0.815    0.797
    slf_3_1 (lmb3)    1.245    0.029   42.256    0.000    0.913    0.954
  selfes_t2 =~                                                          
    slf_1_2           1.000                               0.747    0.862
    slf_2_2 (lmb2)    1.112    0.035   32.055    0.000    0.831    0.802
    slf_3_2 (lmb3)    1.245    0.029   42.256    0.000    0.930    0.956
  d_selfes_1 =~                                                         
    slfs_t2           1.000                               0.615    0.615

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  selfes_t2 ~                                                           
    slfs_t1           1.000                               0.982    0.982
  d_selfes_1 ~                                                          
    slfs_t1 (fb_a)   -0.177    0.041   -4.336    0.000   -0.283   -0.283

Covariances:
                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .selfes_par1_t1 ~~                                                      
   .slf_1_2 (cov1)     0.076    0.016    4.662    0.000    0.076    0.394
 .selfes_par2_t1 ~~                                                      
   .slf_2_2 (cov2)     0.176    0.031    5.584    0.000    0.176    0.459
 .selfes_par3_t1 ~~                                                      
   .slf_3_2 (cov3)    -0.035    0.017   -2.100    0.036   -0.035   -0.432

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .slfs_t2           0.000                               0.000    0.000
   .d_slf_1 (d_n_)    0.866    0.153    5.675    0.000    1.886    1.886
    slfs_t1 (wb__)    3.531    0.046   76.740    0.000    4.815    4.815
   .slf_1_1           0.000                               0.000    0.000
   .slf_2_1  (m2a)   -1.200    0.133   -9.035    0.000   -1.200   -1.173
   .slf_3_1  (m3a)   -1.180    0.114  -10.337    0.000   -1.180   -1.233
   .slf_1_2           0.000                               0.000    0.000
   .slf_2_2  (m2a)   -1.200    0.133   -9.035    0.000   -1.200   -1.159
   .slf_3_2  (m3a)   -1.180    0.114  -10.337    0.000   -1.180   -1.212

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .slfs_t2           0.000                               0.000    0.000
   .d_slf_1 (d_v_)    0.194    0.029    6.762    0.000    0.920    0.920
    slfs_t1 (wb__)    0.538    0.044   12.136    0.000    1.000    1.000
   .slf_1_1 (res1)    0.192    0.017   11.333    0.000    0.192    0.263
   .slf_2_1 (res2)    0.382    0.032   11.934    0.000    0.382    0.365
   .slf_3_1 (res3)    0.082    0.017    4.799    0.000    0.082    0.089
   .slf_1_2 (res1)    0.192    0.017   11.333    0.000    0.192    0.256
   .slf_2_2 (res2)    0.382    0.032   11.934    0.000    0.382    0.357
   .slf_3_2 (res3)    0.082    0.017    4.799    0.000    0.082    0.086


Group 2 [Self-Improvement]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  selfes_t1 =~                                                          
    slf_1_1           1.000                               0.757    0.880
    slf_2_1 (lmb2)    1.112    0.035   32.055    0.000    0.841    0.807
    slf_3_1 (lmb3)    1.245    0.029   42.256    0.000    0.942    0.929
  selfes_t2 =~                                                          
    slf_1_2           1.000                               0.686    0.859
    slf_2_2 (lmb2)    1.112    0.035   32.055    0.000    0.763    0.778
    slf_3_2 (lmb3)    1.245    0.029   42.256    0.000    0.855    0.916
  d_selfes_1 =~                                                         
    slfs_t2           1.000                               0.734    0.734

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  selfes_t2 ~                                                           
    slfs_t1           1.000                               1.103    1.103
  d_selfes_1 ~                                                          
    slfs_t1 (fb_b)   -0.310    0.043   -7.295    0.000   -0.466   -0.466

Covariances:
                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .selfes_par1_t1 ~~                                                      
   .slf_1_2 (cv1b)     0.065    0.016    4.023    0.000    0.065    0.388
 .selfes_par2_t1 ~~                                                      
   .slf_2_2 (cv2b)     0.137    0.027    5.051    0.000    0.137    0.359
 .selfes_par3_t1 ~~                                                      
   .slf_3_2 (cv3b)     0.034    0.024    1.433    0.152    0.034    0.246

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .slfs_t2           0.000                               0.000    0.000
   .d_slf_1 (d_n_)    1.388    0.167    8.332    0.000    2.757    2.757
    slfs_t1 (wb__)    3.548    0.045   78.100    0.000    4.689    4.689
   .slf_1_1           0.000                               0.000    0.000
   .slf_2_1  (m2b)   -1.255    0.130   -9.655    0.000   -1.255   -1.203
   .slf_3_1  (m3b)   -1.185    0.114  -10.411    0.000   -1.185   -1.168
   .slf_1_2           0.000                               0.000    0.000
   .slf_2_2  (m2b)   -1.255    0.130   -9.655    0.000   -1.255   -1.280
   .slf_3_2  (m3b)   -1.185    0.114  -10.411    0.000   -1.185   -1.270

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .slfs_t2           0.000                               0.000    0.000
   .d_slf_1 (d_v_)    0.198    0.027    7.294    0.000    0.783    0.783
    slfs_t1 (wb__)    0.573    0.044   12.915    0.000    1.000    1.000
   .slf_1_1 (rs1b)    0.167    0.016   10.278    0.000    0.167    0.226
   .slf_2_1 (rs2b)    0.380    0.029   13.294    0.000    0.380    0.350
   .slf_3_1 (rs3b)    0.140    0.025    5.653    0.000    0.140    0.136
   .slf_1_2 (rs1b)    0.167    0.016   10.278    0.000    0.167    0.262
   .slf_2_2 (rs2b)    0.380    0.029   13.294    0.000    0.380    0.395
   .slf_3_2 (rs3b)    0.140    0.025    5.653    0.000    0.140    0.161
6.8.1.4 Self-concept clarity

Self-concept clarity: fitting multi-group models

Show the code
# adapt latent change score model from above and add grouping factor in estimation (also add vectorized equality constraints to the model)

# configural invariance
mi_lcs_concept_group_config <- '
concept_t1 =~ 1*concept_par1_t1 + c("lamb2a", "lamb2b")*concept_par2_t1 + c("lamb3a", "lamb3b")*concept_par3_t1 # This specifies the measurement model for concept_t1 
concept_t2 =~ 1*concept_par1_t2 + c("lamb2a", "lamb2b")*concept_par2_t2 + c("lamb3a", "lamb3b")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadings

concept_t2 ~ 1*concept_t1     # This parameter regresses concept_t2 perfectly on concept_t1
d_concept_1 =~ 1*concept_t2   # This defines the latent change score factor as measured perfectly by scores on concept_t2
concept_t2 ~ 0*1           # This line constrains the intercept of concept_t2 to 0
concept_t2 ~~ 0*concept_t2    # This fixes the variance of concept_t2 to 0

d_concept_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
concept_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of concept_t1 
d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1   # This estimates the variance of the change scores 
concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1     # This estimates the variance of the concept_t1 
d_concept_1 ~ c("fb_a", "fb_b")*concept_t1     # This estimates the self-feedback parameter

concept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1   # This allows residual variance on indicator X1 at T1 
concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1   # This allows residual variance on indicator X2 at T1
concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1   # This allows residual variance on indicator X3 at T1

concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2  # This allows residual variance on indicator X1 at T2 
concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2  # This allows residual variance on indicator X2 at T2 
concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2  # This allows residual variance on indicator X3 at T2

concept_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
concept_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
concept_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

concept_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
concept_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
concept_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'
lcs_concept_group_config <- sem(mi_lcs_concept_group_config, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', 
                                fixed.x=FALSE, missing='fiml', group = "rando")

# weak invariance
mi_lcs_concept_group_weak <- '
concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 
concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadings

concept_t2 ~ 1*concept_t1     # This parameter regresses concept_t2 perfectly on concept_t1
d_concept_1 =~ 1*concept_t2   # This defines the latent change score factor as measured perfectly by scores on concept_t2
concept_t2 ~ 0*1           # This line constrains the intercept of concept_t2 to 0
concept_t2 ~~ 0*concept_t2    # This fixes the variance of concept_t2 to 0

d_concept_1 ~ c("d_int_a", "d_int_b")*1           # This estimates the intercept of the change score 
concept_t1 ~ c("wb_int_a", "wb_int_b")*1            # This estimates the intercept of concept_t1 
d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1   # This estimates the variance of the change scores 
concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1     # This estimates the variance of the concept_t1 
d_concept_1 ~ c("fb_a", "fb_b")*concept_t1     # This estimates the self-feedback parameter

concept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1   # This allows residual variance on indicator X1 at T1 
concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1   # This allows residual variance on indicator X2 at T1
concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1   # This allows residual variance on indicator X3 at T1

concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2  # This allows residual variance on indicator X1 at T2 
concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2  # This allows residual variance on indicator X2 at T2 
concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2  # This allows residual variance on indicator X3 at T2

concept_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
concept_par2_t1 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T1
concept_par3_t1 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T1

concept_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
concept_par2_t2 ~ c("m2a", "m2b")*1     # This estimates the intercept of X2 at T2
concept_par3_t2 ~ c("m3a", "m3b")*1     # This estimates the intercept of X3 at T2
'

lcs_concept_group_weak <- sem(mi_lcs_concept_group_weak, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                           group = "rando", group.equal = "loadings")

# strong invariance
mi_lcs_concept_group_strong <- '
concept_t1 =~ 1*concept_par1_t1 + c("lamb2", "lamb2")*concept_par2_t1 + c("lamb3", "lamb3")*concept_par3_t1 # This specifies the measurement model for concept_t1 
concept_t2 =~ 1*concept_par1_t2 + c("lamb2", "lamb2")*concept_par2_t2 + c("lamb3", "lamb3")*concept_par3_t2 # This specifies the measurement model for concept_t2 with the equality constrained factor loadings

concept_t2 ~ 1*concept_t1     # This parameter regresses concept_t2 perfectly on concept_t1
d_concept_1 =~ 1*concept_t2   # This defines the latent change score factor as measured perfectly by scores on concept_t2
concept_t2 ~ 0*1           # This line constrains the intercept of concept_t2 to 0
concept_t2 ~~ 0*concept_t2    # This fixes the variance of concept_t2 to 0

d_concept_1 ~ c("d_int", "d_int")*1           # This estimates the intercept of the change score 
concept_t1 ~ c("wb_int", "wb_int")*1            # This estimates the intercept of concept_t1 
d_concept_1 ~~ c("d_var_a", "d_var_b")*d_concept_1   # This estimates the variance of the change scores 
concept_t1 ~~ c("wb_var_a", "wb_var_b")*concept_t1     # This estimates the variance of the concept_t1 
d_concept_1 ~ c("fb_a", "fb_b")*concept_t1     # This estimates the self-feedback parameter

concept_par1_t1 ~~ c("cov1a", "cov1b")*concept_par1_t2   # This allows residual covariance on indicator X1 across T1 and T2
concept_par2_t1 ~~ c("cov2a", "cov2b")*concept_par2_t2   # This allows residual covariance on indicator X2 across T1 and T2
concept_par3_t1 ~~ c("cov3a", "cov3b")*concept_par3_t2   # This allows residual covariance on indicator X3 across T1 and T2

concept_par1_t1 ~~ c("res1a", "res1b")*concept_par1_t1   # This allows residual variance on indicator X1 at T1 
concept_par2_t1 ~~ c("res2a", "res2b")*concept_par2_t1   # This allows residual variance on indicator X2 at T1
concept_par3_t1 ~~ c("res3a", "res3b")*concept_par3_t1   # This allows residual variance on indicator X3 at T1

concept_par1_t2 ~~ c("res1a", "res1b")*concept_par1_t2  # This allows residual variance on indicator X1 at T2 
concept_par2_t2 ~~ c("res2a", "res2b")*concept_par2_t2  # This allows residual variance on indicator X2 at T2 
concept_par3_t2 ~~ c("res3a", "res3b")*concept_par3_t2  # This allows residual variance on indicator X3 at T2

concept_par1_t1 ~ 0*1      # This constrains the intercept of X1 to 0 at T1
concept_par2_t1 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T1
concept_par3_t1 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T1

concept_par1_t2 ~ 0*1      # This constrains the intercept of X1 to 0 at T2
concept_par2_t2 ~ c("m2", "m2")*1     # This estimates the intercept of X2 at T2
concept_par3_t2 ~ c("m3", "m3")*1     # This estimates the intercept of X3 at T2
'

lcs_concept_group_strong <- sem(mi_lcs_concept_group_strong, data=df_sbsa2_wide_wb %>% filter(rando!="Waitlist-Control"), estimator='mlr', fixed.x=FALSE, missing='fiml', 
                             group = "rando", group.equal = c("intercepts", "loadings"))

Meaning in life: results

# model comparison tests for measurement invariance
lavTestLRT(lcs_concept_group_config, lcs_concept_group_weak, lcs_concept_group_strong)

Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")

lavaan NOTE:
    The "Chisq" column contains standard test statistics, not the
    robust test that should be reported per model. A robust difference
    test is a function of two standard (not robust) statistics.
 
                         Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)
lcs_concept_group_config 24 7424.3 7559.7 31.207                              
lcs_concept_group_weak   26 7420.6 7546.9 31.474    0.26259       2     0.8770
lcs_concept_group_strong 30 7413.3 7521.6 32.179    0.69741       4     0.9516
# show model with varying latent change parameters 
# -> key parameter is "d_concept_1 ~1"
# labelled parameter as "d_int_a" & "d_int_b" (a = Self-Acceptance group, b = Self-Improvement group)
kable(broom::tidy(lcs_concept_group_weak, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_concept_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_concept_1 ~1 d_int_a 1.014 2.021 6.265 0
d_concept_1 ~1 d_int_b 1.113 2.247 8.203 0
# constrained to be equal in the strong measurement invariance model:
kable(broom::tidy(lcs_concept_group_strong, conf.int = TRUE, conf.level = 0.95) %>% 
        select(term, label, estimate, std.all, statistic, p.value) %>% 
        filter(term %in% c("d_concept_1 ~1 ")), digits = 3) 
term label estimate std.all statistic p.value
d_concept_1 ~1 d_int 1.07 2.111 10.268 0
d_concept_1 ~1 d_int 1.07 2.181 10.268 0

Slightly more positive change in self-concept clarity in the Self-Acceptance group but no substantial differences according to the LRTs.

# whole model (weak invariance)
summary(lcs_concept_group_weak, fit.measures=TRUE, standardized=TRUE, rsquare=F)
lavaan 0.6.15 ended normally after 65 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        44
  Number of equality constraints                    16

  Number of observations per group:               Used       Total
    Self-Acceptance                                336         336
    Self-Improvement                               337         338
  Number of missing patterns per group:                           
    Self-Acceptance                                  2            
    Self-Improvement                                 2            

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                                31.474      28.712
  Degrees of freedom                                26          26
  P-value (Chi-square)                           0.211       0.324
  Scaling correction factor                                  1.096
    Yuan-Bentler correction (Mplus variant)                       
  Test statistic for each group:
    Self-Acceptance                             17.734      16.178
    Self-Improvement                            13.740      12.534

Model Test Baseline Model:

  Test statistic                              2887.162    2162.733
  Degrees of freedom                                30          30
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.335

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.998       0.999
  Tucker-Lewis Index (TLI)                       0.998       0.999
                                                                  
  Robust Comparative Fit Index (CFI)                         0.999
  Robust Tucker-Lewis Index (TLI)                            0.999

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -3682.288   -3682.288
  Scaling correction factor                                  0.726
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)      -3666.551   -3666.551
  Scaling correction factor                                  1.119
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                                7420.576    7420.576
  Bayesian (BIC)                              7546.905    7546.905
  Sample-size adjusted Bayesian (SABIC)       7458.003    7458.003

Root Mean Square Error of Approximation:

  RMSEA                                          0.025       0.018
  90 Percent confidence interval - lower         0.000       0.000
  90 Percent confidence interval - upper         0.052       0.047
  P-value H_0: RMSEA <= 0.050                    0.932       0.971
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.020
  90 Percent confidence interval - lower                     0.000
  90 Percent confidence interval - upper                     0.053
  P-value H_0: Robust RMSEA <= 0.050                         0.925
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.022       0.022

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian


Group 1 [Self-Acceptance]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  concept_t1 =~                                                         
    cnc_1_1           1.000                               0.650    0.794
    cnc_2_1 (lmb2)    1.283    0.041   31.361    0.000    0.834    0.869
    cnc_3_1 (lmb3)    1.414    0.042   33.772    0.000    0.919    0.924
  concept_t2 =~                                                         
    cnc_1_2           1.000                               0.663    0.800
    cnc_2_2 (lmb2)    1.283    0.041   31.361    0.000    0.851    0.873
    cnc_3_2 (lmb3)    1.414    0.042   33.772    0.000    0.938    0.927
  d_concept_1 =~                                                        
    cncpt_2           1.000                               0.756    0.756

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  concept_t2 ~                                                          
    cncpt_1           1.000                               0.980    0.980
  d_concept_1 ~                                                         
    cncpt_1 (fb_a)   -0.277    0.051   -5.471    0.000   -0.359   -0.359

Covariances:
                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .concept_par1_t1 ~~                                                      
   .cnc_1_2 (cov1)      0.070    0.020    3.400    0.001    0.070    0.281
 .concept_par2_t1 ~~                                                      
   .cnc_2_2 (cov2)      0.086    0.021    4.071    0.000    0.086    0.380
 .concept_par3_t1 ~~                                                      
   .cnc_3_2 (cov3)      0.028    0.022    1.296    0.195    0.028    0.194

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .cncpt_2           0.000                               0.000    0.000
   .d_cnc_1 (d_n_)    1.014    0.162    6.265    0.000    2.021    2.021
    cncpt_1 (wb__)    3.050    0.042   72.638    0.000    4.692    4.692
   .cnc_1_1           0.000                               0.000    0.000
   .cnc_2_1  (m2a)   -0.931    0.138   -6.754    0.000   -0.931   -0.970
   .cnc_3_1  (m3a)   -1.377    0.138   -9.984    0.000   -1.377   -1.384
   .cnc_1_2           0.000                               0.000    0.000
   .cnc_2_2  (m2a)   -0.931    0.138   -6.754    0.000   -0.931   -0.955
   .cnc_3_2  (m3a)   -1.377    0.138   -9.984    0.000   -1.377   -1.361

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .cncpt_2           0.000                               0.000    0.000
   .d_cnc_1 (d_v_)    0.219    0.026    8.587    0.000    0.871    0.871
    cncpt_1 (wb__)    0.423    0.036   11.577    0.000    1.000    1.000
   .cnc_1_1 (res1)    0.248    0.020   12.590    0.000    0.248    0.370
   .cnc_2_1 (res2)    0.227    0.020   11.576    0.000    0.227    0.246
   .cnc_3_1 (res3)    0.144    0.023    6.215    0.000    0.144    0.146
   .cnc_1_2 (res1)    0.248    0.020   12.590    0.000    0.248    0.361
   .cnc_2_2 (res2)    0.227    0.020   11.576    0.000    0.227    0.238
   .cnc_3_2 (res3)    0.144    0.023    6.215    0.000    0.144    0.141


Group 2 [Self-Improvement]:

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  concept_t1 =~                                                         
    cnc_1_1           1.000                               0.700    0.802
    cnc_2_1 (lmb2)    1.283    0.041   31.361    0.000    0.899    0.895
    cnc_3_1 (lmb3)    1.414    0.042   33.772    0.000    0.990    0.919
  concept_t2 =~                                                         
    cnc_1_2           1.000                               0.661    0.785
    cnc_2_2 (lmb2)    1.283    0.041   31.361    0.000    0.848    0.885
    cnc_3_2 (lmb3)    1.414    0.042   33.772    0.000    0.934    0.910
  d_concept_1 =~                                                        
    cncpt_2           1.000                               0.750    0.750

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  concept_t2 ~                                                          
    cncpt_1           1.000                               1.060    1.060
  d_concept_1 ~                                                         
    cncpt_1 (fb_b)   -0.305    0.042   -7.249    0.000   -0.432   -0.432

Covariances:
                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .concept_par1_t1 ~~                                                      
   .cnc_1_2 (cv1b)      0.072    0.020    3.556    0.000    0.072    0.263
 .concept_par2_t1 ~~                                                      
   .cnc_2_2 (cv2b)      0.063    0.020    3.196    0.001    0.063    0.315
 .concept_par3_t1 ~~                                                      
   .cnc_3_2 (cv3b)      0.037    0.021    1.798    0.072    0.037    0.207

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .cncpt_2           0.000                               0.000    0.000
   .d_cnc_1 (d_n_)    1.113    0.136    8.203    0.000    2.247    2.247
    cncpt_1 (wb__)    3.038    0.045   67.515    0.000    4.337    4.337
   .cnc_1_1           0.000                               0.000    0.000
   .cnc_2_1  (m2b)   -0.899    0.134   -6.729    0.000   -0.899   -0.896
   .cnc_3_1  (m3b)   -1.363    0.135  -10.067    0.000   -1.363   -1.265
   .cnc_1_2           0.000                               0.000    0.000
   .cnc_2_2  (m2b)   -0.899    0.134   -6.729    0.000   -0.899   -0.939
   .cnc_3_2  (m3b)   -1.363    0.135  -10.067    0.000   -1.363   -1.328

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .cncpt_2           0.000                               0.000    0.000
   .d_cnc_1 (d_v_)    0.200    0.029    6.986    0.000    0.814    0.814
    cncpt_1 (wb__)    0.490    0.039   12.493    0.000    1.000    1.000
   .cnc_1_1 (rs1b)    0.273    0.020   13.575    0.000    0.273    0.357
   .cnc_2_1 (rs2b)    0.199    0.021    9.657    0.000    0.199    0.198
   .cnc_3_1 (rs3b)    0.181    0.027    6.668    0.000    0.181    0.156
   .cnc_1_2 (rs1b)    0.273    0.020   13.575    0.000    0.273    0.385
   .cnc_2_2 (rs2b)    0.199    0.021    9.657    0.000    0.199    0.217
   .cnc_3_2 (rs3b)    0.181    0.027    6.668    0.000    0.181    0.172

6.8.2 Current- and ideal-self personality differences across groups

Profile correlations by group and measurement occasion (mixed effects models) - results:

df_sbsa2_t1t2 <- df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(1,2)) %>% mutate(time_d = time - 1)

psych::describeBy(df_sbsa2_t1t2$profile_corr_item_z, list(df_sbsa2_t1t2$rando, df_sbsa2_t1t2$time_d))

 Descriptive statistics by group 
: Self-Acceptance
: 0
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 335 0.42 0.49   0.37    0.38 0.43 -1.09 3.39  4.48 1.14     4.25 0.03
------------------------------------------------------------ 
: Self-Improvement
: 0
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 336 0.42 0.49   0.39     0.4 0.51 -0.89 2.33  3.22 0.47     0.36 0.03
------------------------------------------------------------ 
: Self-Acceptance
: 1
   vars   n mean  sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 284 0.55 0.5   0.52    0.53 0.48 -1.07 2.17  3.23 0.36      0.5 0.03
------------------------------------------------------------ 
: Self-Improvement
: 1
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 291 0.56 0.48   0.54    0.55 0.56 -0.62 1.83  2.45 0.19    -0.53 0.03
psych::describeBy(df_sbsa2_t1t2$profile_corr_facet_z, list(df_sbsa2_t1t2$rando, df_sbsa2_t1t2$time_d))

 Descriptive statistics by group 
: Self-Acceptance
: 0
   vars   n mean   sd median trimmed mad   min  max range skew kurtosis   se
X1    1 335 0.35 0.65   0.27    0.31 0.6 -1.07 3.77  4.84 0.93     2.14 0.04
------------------------------------------------------------ 
: Self-Improvement
: 0
   vars   n mean   sd median trimmed mad   min  max range skew kurtosis   se
X1    1 337 0.34 0.67   0.29    0.31 0.7 -1.23 2.53  3.75 0.46     0.04 0.04
------------------------------------------------------------ 
: Self-Acceptance
: 1
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 284 0.51 0.67   0.46    0.48 0.66 -1.34 3.09  4.43 0.42     0.32 0.04
------------------------------------------------------------ 
: Self-Improvement
: 1
   vars   n mean   sd median trimmed  mad   min  max range skew kurtosis   se
X1    1 292 0.53 0.66   0.49     0.5 0.69 -1.08 2.51   3.6 0.32    -0.32 0.04
lm_profile_corr_item <- lmerTest::lmer(profile_corr_item_z ~ time_d * rando + (1 | pid), data = df_sbsa2_t1t2)
lm_profile_corr_facet <- lmerTest::lmer(profile_corr_facet_z ~ time_d * rando + (1 | pid), data = df_sbsa2_t1t2)

kable(bind_rows(as.data.frame(summary(lm_profile_corr_item)$coefficients), as.data.frame(summary(lm_profile_corr_facet)$coefficients)) %>% as_tibble() %>% mutate(outcome = c(rep("Item-level profile corr.", 4), rep("Facet-level profile corr.", 4)), term = c(rep(c("Intercept", "time", "group", "time*group"), 2))) %>% select(outcome, term, everything()) %>% rename(p = `Pr(>|t|)`), digits = 3)
outcome term Estimate Std. Error df t value p
Item-level profile corr. Intercept 0.418 0.027 845.076 15.580 0.000
Item-level profile corr. time 0.129 0.021 592.195 6.065 0.000
Item-level profile corr. group 0.000 0.038 845.887 -0.012 0.990
Item-level profile corr. time*group 0.007 0.030 591.350 0.242 0.809
Facet-level profile corr. Intercept 0.350 0.036 846.010 9.723 0.000
Facet-level profile corr. time 0.164 0.028 595.605 5.783 0.000
Facet-level profile corr. group -0.008 0.051 846.005 -0.151 0.880
Facet-level profile corr. time*group 0.010 0.040 594.236 0.259 0.796

Squared trait-/facet-differences by group and measurement occasion (mixed effects models) - results:

mod_traits_sqdiff_groups <- df_sbsa2_t1t2 %>% 
  select(pid, time_d, rando, ends_with("_sqdiff")) %>% 
  pivot_longer(ends_with("_sqdiff"), 
               names_to = "test", names_prefix = "facet", values_to = "score", values_drop_na = TRUE) %>% 
  group_by(pid, test) %>% 
  mutate(assessments = n()) %>% 
  ungroup() %>% 
  filter(assessments==2) %>% 
  select(-assessments) %>% 
  group_nest(test) %>% 
  mutate(lmer_mods = map(data, ~lmerTest::lmer(score ~ time_d * rando + (1 | pid), data = .x))) %>% 
  pull(lmer_mods) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

mod_traits_sqdiff_groups_unlist <- as.data.frame(summary(mod_traits_sqdiff_groups[[1]])$coefficients) %>% as_tibble()
for (i in 2:length(mod_traits_sqdiff_groups)) {
  mod_traits_sqdiff_groups_unlist <- bind_rows(mod_traits_sqdiff_groups_unlist, 
                                               as.data.frame(summary(mod_traits_sqdiff_groups[[i]])$coefficients) %>% as_tibble())
}

kable(mod_traits_sqdiff_groups_unlist %>% 
        mutate(outcome = rep(sort(names(b5_vars)), each=4), 
               term = c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>% 
        select(outcome, term, everything()) %>% rename(p = `Pr(>|t|)`) %>% 
        arrange(factor(outcome, levels = (names(b5_vars)))), 
      digits = 3)
outcome term Estimate Std. Error df t value p
extraversion Intercept 1.753 0.108 768.868 16.160 0.000
extraversion time -0.308 0.083 575.000 -3.693 0.000
extraversion group 0.172 0.152 768.868 1.128 0.259
extraversion time*group -0.126 0.117 575.000 -1.075 0.283
agreeableness Intercept 0.507 0.048 794.537 10.552 0.000
agreeableness time -0.078 0.039 574.000 -1.999 0.046
agreeableness group -0.032 0.067 794.537 -0.477 0.633
agreeableness time*group -0.037 0.055 574.000 -0.678 0.498
conscientiousness Intercept 1.661 0.113 752.187 14.681 0.000
conscientiousness time -0.139 0.084 575.000 -1.662 0.097
conscientiousness group -0.067 0.159 752.187 -0.421 0.674
conscientiousness time*group -0.060 0.117 575.000 -0.510 0.610
neuroticism Intercept 3.363 0.189 766.422 17.764 0.000
neuroticism time -0.636 0.145 575.000 -4.390 0.000
neuroticism group -0.018 0.266 766.422 -0.068 0.946
neuroticism time*group -0.121 0.203 575.000 -0.594 0.553
openness Intercept 0.464 0.048 823.546 9.580 0.000
openness time -0.054 0.042 573.000 -1.288 0.198
openness group 0.002 0.068 823.546 0.029 0.977
openness time*group -0.043 0.059 573.000 -0.738 0.461
sociability Intercept 2.989 0.179 797.073 16.696 0.000
sociability time -0.870 0.147 573.000 -5.907 0.000
sociability group -0.016 0.251 797.073 -0.066 0.948
sociability time*group 0.173 0.207 573.000 0.835 0.404
assertiveness Intercept 1.601 0.130 819.490 12.291 0.000
assertiveness time -0.116 0.112 572.000 -1.034 0.302
assertiveness group 0.304 0.183 819.490 1.663 0.097
assertiveness time*group -0.243 0.157 572.000 -1.540 0.124
energy Intercept 1.976 0.145 870.043 13.607 0.000
energy time -0.244 0.135 574.000 -1.803 0.072
energy group 0.127 0.204 870.043 0.624 0.533
energy time*group -0.182 0.190 574.000 -0.959 0.338
compassion Intercept 0.476 0.059 938.372 8.086 0.000
compassion time -0.053 0.060 574.000 -0.870 0.385
compassion group 0.139 0.083 938.372 1.684 0.093
compassion time*group -0.128 0.085 574.000 -1.511 0.131
respectfulness Intercept 0.520 0.061 825.639 8.474 0.000
respectfulness time 0.007 0.054 571.000 0.130 0.897
respectfulness group -0.025 0.086 825.639 -0.290 0.772
respectfulness time*group -0.038 0.075 571.000 -0.499 0.618
trust Intercept 1.239 0.094 934.116 13.146 0.000
trust time -0.309 0.096 573.000 -3.204 0.001
trust group -0.123 0.133 934.116 -0.930 0.353
trust time*group -0.039 0.136 573.000 -0.289 0.773
organization Intercept 1.852 0.146 796.417 12.680 0.000
organization time -0.143 0.120 574.000 -1.199 0.231
organization group -0.165 0.205 796.417 -0.806 0.421
organization time*group -0.011 0.168 574.000 -0.066 0.947
productiveness Intercept 2.834 0.171 802.138 16.604 0.000
productiveness time -0.355 0.143 571.000 -2.488 0.013
productiveness group 0.018 0.240 802.138 0.074 0.941
productiveness time*group -0.194 0.200 571.000 -0.966 0.335
responsibility Intercept 1.284 0.117 792.347 10.981 0.000
responsibility time -0.048 0.096 572.000 -0.499 0.618
responsibility group 0.060 0.164 792.347 0.364 0.716
responsibility time*group -0.179 0.134 572.000 -1.337 0.182
anxiety Intercept 4.276 0.252 810.764 17.001 0.000
anxiety time -0.620 0.211 575.000 -2.934 0.003
anxiety group 0.051 0.353 810.764 0.144 0.886
anxiety time*group -0.119 0.297 575.000 -0.401 0.689
depression Intercept 3.968 0.220 759.626 18.006 0.000
depression time -0.894 0.167 573.000 -5.356 0.000
depression group -0.076 0.310 759.626 -0.246 0.805
depression time*group 0.013 0.235 573.000 0.056 0.955
volatility Intercept 2.821 0.199 851.931 14.187 0.000
volatility time -0.464 0.180 575.000 -2.580 0.010
volatility group 0.041 0.279 851.931 0.149 0.882
volatility time*group -0.275 0.252 575.000 -1.088 0.277
curiosity Intercept 0.558 0.065 870.775 8.598 0.000
curiosity time -0.087 0.061 572.000 -1.431 0.153
curiosity group -0.003 0.091 870.775 -0.038 0.970
curiosity time*group 0.084 0.085 572.000 0.985 0.325
aesthetic Intercept 0.440 0.054 934.046 8.107 0.000
aesthetic time -0.045 0.056 571.000 -0.804 0.422
aesthetic group 0.011 0.076 934.046 0.150 0.880
aesthetic time*group -0.017 0.078 571.000 -0.211 0.833
imagination Intercept 1.173 0.108 781.107 10.813 0.000
imagination time -0.201 0.086 573.000 -2.333 0.020
imagination group 0.006 0.152 781.107 0.037 0.971
imagination time*group -0.027 0.121 573.000 -0.227 0.821

With both conceptualizations of the similarity / difference of current- and ideal-level personality (profile correlations / squared differences), we find no significant effects of group (at T1) or of interaction effects of group by measurement occasion (at T2).

7 Exploratory findings

7.1 Differences across intervention groups (a)

Now confirmatory in Study 2.

7.2 Personal project dimensions (b)

We will explore b) whether the extent of change/acceptance is related to personal project dimension variables.

Not assessed, anymore, in study 2. Please see study 1 report for results.

7.3 Traits that were selected as change goals (c)

We will explore c) whether there are stronger rates of change/acceptance on traits that were selected as change goals than those that were not.

TBD!

7.4 Manipulation check (d)

Does self-improvement intervene on current self trait change (but not ideal self)? Does self-acceptance intervene on ideal self trait change (but not current self)?

7.4.1 From T1 to T2

Changes in current self traits over time:

Show the code
df_manip_check_curr <- df_sbsa2_t1t2 %>% 
  select(pid, time_d, rando, 
         paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_comb_curr")) %>% 
  pivot_longer(ends_with("_comb_curr"), 
               names_to = "test", names_prefix = "facet", values_to = "score", values_drop_na = TRUE) %>% 
  group_nest(test) %>% 
  mutate(lmer_mods = map(data, ~lmerTest::lmer(score ~ time_d * rando + (1 | pid), data = .x))) %>% 
  pull(lmer_mods) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

df_manip_check_curr_unlist <- as.data.frame(summary(df_manip_check_curr[[1]])$coefficients) %>% as_tibble()
for (i in 2:length(df_manip_check_curr)) {
  df_manip_check_curr_unlist <- bind_rows(df_manip_check_curr_unlist, 
                                          as.data.frame(summary(df_manip_check_curr[[i]])$coefficients) %>% as_tibble())
}
kable(df_manip_check_curr_unlist %>% 
        mutate(outcome = rep(sort(names(b5_vars)), each=4), 
               term = c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>% 
        rename(p = `Pr(>|t|)`, str_err = `Std. Error`, est = Estimate) %>% select(outcome, term, est, str_err, p) %>% 
        mutate(sig = ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>% 
        arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, 
      digits = 3)
outcome term est str_err p sig
extraversion Intercept 2.845 0.039 0.000 ***
extraversion time 0.113 0.026 0.000 ***
extraversion group -0.069 0.054 0.203
extraversion time*group 0.009 0.036 0.800
agreeableness Intercept 3.633 0.032 0.000 ***
agreeableness time 0.048 0.023 0.038 *
agreeableness group -0.030 0.046 0.515
agreeableness time*group 0.033 0.033 0.316
conscientiousness Intercept 3.371 0.042 0.000 ***
conscientiousness time 0.075 0.027 0.006 **
conscientiousness group 0.026 0.059 0.653
conscientiousness time*group 0.026 0.038 0.490
neuroticism Intercept 3.220 0.046 0.000 ***
neuroticism time -0.172 0.030 0.000 ***
neuroticism group 0.033 0.065 0.611
neuroticism time*group -0.006 0.042 0.887
openness Intercept 3.707 0.035 0.000 ***
openness time 0.079 0.023 0.001 ***
openness group -0.029 0.050 0.555
openness time*group -0.001 0.032 0.977
sociability Intercept 2.485 0.054 0.000 ***
sociability time 0.168 0.037 0.000 ***
sociability group -0.040 0.076 0.600
sociability time*group -0.061 0.053 0.244
assertiveness Intercept 2.908 0.048 0.000 ***
assertiveness time 0.076 0.035 0.028 *
assertiveness group -0.078 0.068 0.250
assertiveness time*group 0.036 0.048 0.453
energy Intercept 3.140 0.046 0.000 ***
energy time 0.094 0.038 0.014 *
energy group -0.088 0.065 0.176
energy time*group 0.053 0.054 0.326
compassion Intercept 3.753 0.041 0.000 ***
compassion time 0.042 0.037 0.254
compassion group -0.056 0.057 0.326
compassion time*group 0.079 0.051 0.124
respectfulness Intercept 4.035 0.038 0.000 ***
respectfulness time 0.013 0.032 0.680
respectfulness group -0.014 0.054 0.804
respectfulness time*group -0.002 0.044 0.955
trust Intercept 3.110 0.045 0.000 ***
trust time 0.097 0.035 0.006 **
trust group -0.016 0.064 0.800
trust time*group 0.011 0.049 0.831
organization Intercept 3.445 0.052 0.000 ***
organization time 0.056 0.037 0.131
organization group 0.109 0.074 0.143
organization time*group 0.023 0.052 0.657
productiveness Intercept 3.148 0.049 0.000 ***
productiveness time 0.141 0.039 0.000 ***
productiveness group 0.043 0.069 0.538
productiveness time*group 0.001 0.054 0.978
responsibility Intercept 3.522 0.045 0.000 ***
responsibility time 0.035 0.036 0.333
responsibility group -0.068 0.064 0.284
responsibility time*group 0.052 0.051 0.311
anxiety Intercept 3.525 0.050 0.000 ***
anxiety time -0.147 0.037 0.000 ***
anxiety group 0.093 0.070 0.185
anxiety time*group -0.012 0.052 0.817
depression Intercept 3.144 0.054 0.000 ***
depression time -0.238 0.039 0.000 ***
depression group 0.004 0.076 0.954
depression time*group 0.031 0.055 0.572
volatility Intercept 2.993 0.054 0.000 ***
volatility time -0.127 0.042 0.002 **
volatility group 0.001 0.076 0.987
volatility time*group -0.045 0.058 0.441
curiosity Intercept 3.817 0.043 0.000 ***
curiosity time 0.052 0.032 0.106
curiosity group -0.014 0.060 0.817
curiosity time*group 0.006 0.045 0.899
aesthetic Intercept 3.661 0.047 0.000 ***
aesthetic time 0.047 0.036 0.192
aesthetic group -0.087 0.066 0.185
aesthetic time*group 0.036 0.050 0.474
imagination Intercept 3.642 0.045 0.000 ***
imagination time 0.141 0.035 0.000 ***
imagination group 0.014 0.063 0.824
imagination time*group -0.046 0.049 0.349

No significant group effects (higher trait level in self-improvement group at baseline) and also no significant differences in the changes over time in current-self trait levels (timeXgroup). Significant (at p < .001) changes over time in current-self trait levels (time) for 3 of the domains and five of the facets (independent of intervention group membership).

Changes in ideal self traits over time:

Show the code
df_manip_check_ideal <- df_sbsa2_t1t2 %>% 
  select(pid, time_d, rando, 
         paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_comb_ideal")) %>% 
  pivot_longer(ends_with("_comb_ideal"), 
               names_to = "test", names_prefix = "facet", values_to = "score", values_drop_na = TRUE) %>% 
  group_nest(test) %>% 
  mutate(lmer_mods = map(data, ~lmerTest::lmer(score ~ time_d * rando + (1 | pid), data = .x))) %>% 
  pull(lmer_mods) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

df_manip_check_ideal_unlist <- as.data.frame(summary(df_manip_check_ideal[[1]])$coefficients) %>% as_tibble()
for (i in 2:length(df_manip_check_ideal)) {
  df_manip_check_ideal_unlist <- bind_rows(df_manip_check_ideal_unlist, 
                                          as.data.frame(summary(df_manip_check_ideal[[i]])$coefficients) %>% as_tibble())
}
kable(df_manip_check_ideal_unlist %>% 
        mutate(outcome = rep(sort(names(b5_vars)), each=4), 
               term = c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>% 
        rename(p = `Pr(>|t|)`, str_err = `Std. Error`, est = Estimate) %>% select(outcome, term, est, str_err, p) %>% 
        mutate(sig = ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>% 
        arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, 
      digits = 3)
outcome term est str_err p sig
extraversion Intercept 3.919 0.027 0.000 ***
extraversion time -0.023 0.024 0.351
extraversion group -0.009 0.038 0.812
extraversion time*group 0.007 0.034 0.827
agreeableness Intercept 4.078 0.029 0.000 ***
agreeableness time 0.007 0.024 0.777
agreeableness group -0.018 0.041 0.670
agreeableness time*group -0.035 0.034 0.300
conscientiousness Intercept 4.414 0.027 0.000 ***
conscientiousness time 0.027 0.024 0.266
conscientiousness group 0.005 0.038 0.889
conscientiousness time*group -0.018 0.034 0.601
neuroticism Intercept 1.704 0.028 0.000 ***
neuroticism time 0.004 0.026 0.878
neuroticism group -0.032 0.039 0.413
neuroticism time*group 0.032 0.037 0.381
openness Intercept 4.140 0.031 0.000 ***
openness time 0.054 0.025 0.035 *
openness group -0.052 0.043 0.233
openness time*group 0.001 0.036 0.971
sociability Intercept 3.735 0.038 0.000 ***
sociability time -0.085 0.036 0.020 *
sociability group -0.029 0.054 0.583
sociability time*group 0.060 0.051 0.239
assertiveness Intercept 3.832 0.037 0.000 ***
assertiveness time 0.001 0.035 0.984
assertiveness group 0.001 0.052 0.981
assertiveness time*group 0.002 0.049 0.967
energy Intercept 4.189 0.034 0.000 ***
energy time 0.016 0.038 0.672
energy group 0.003 0.048 0.953
energy time*group -0.047 0.053 0.384
compassion Intercept 4.029 0.038 0.000 ***
compassion time 0.016 0.037 0.675
compassion group -0.019 0.053 0.721
compassion time*group -0.008 0.052 0.885
respectfulness Intercept 4.454 0.032 0.000 ***
respectfulness time -0.001 0.029 0.963
respectfulness group -0.031 0.045 0.492
respectfulness time*group -0.007 0.041 0.862
trust Intercept 3.751 0.040 0.000 ***
trust time 0.013 0.036 0.728
trust group -0.002 0.056 0.965
trust time*group -0.099 0.051 0.053
organization Intercept 4.426 0.032 0.000 ***
organization time 0.006 0.034 0.849
organization group 0.001 0.045 0.982
organization time*group 0.031 0.048 0.511
productiveness Intercept 4.513 0.030 0.000 ***
productiveness time 0.045 0.030 0.137
productiveness group 0.055 0.042 0.197
productiveness time*group -0.052 0.042 0.215
responsibility Intercept 4.300 0.035 0.000 ***
responsibility time 0.035 0.033 0.288
responsibility group -0.031 0.049 0.523
responsibility time*group -0.027 0.046 0.562
anxiety Intercept 1.876 0.035 0.000 ***
anxiety time 0.030 0.039 0.445
anxiety group -0.036 0.050 0.466
anxiety time*group 0.004 0.055 0.947
depression Intercept 1.499 0.030 0.000 ***
depression time -0.003 0.031 0.911
depression group -0.022 0.042 0.597
depression time*group 0.040 0.043 0.356
volatility Intercept 1.736 0.035 0.000 ***
volatility time -0.018 0.036 0.611
volatility group -0.041 0.049 0.409
volatility time*group 0.066 0.050 0.188
curiosity Intercept 4.129 0.038 0.000 ***
curiosity time 0.028 0.038 0.455
curiosity group -0.046 0.054 0.396
curiosity time*group 0.002 0.053 0.965
aesthetic Intercept 3.922 0.039 0.000 ***
aesthetic time 0.108 0.037 0.004 **
aesthetic group -0.082 0.056 0.142
aesthetic time*group -0.050 0.052 0.334
imagination Intercept 4.369 0.036 0.000 ***
imagination time 0.024 0.036 0.506
imagination group -0.010 0.051 0.842
imagination time*group 0.028 0.051 0.585

No significant group effects (higher trait level in self-improvement group at baseline) and also no significant differences in the changes over time in ideal-self trait levels (timeXgroup). No significant changes over time in ideal-self trait levels (time; independent of intervention group membership).

7.4.2 From T2 to T3

Changes in current self traits over time:

Show the code
df_sbsa2_t2t3 <- df_sbsa2 %>% filter(rando!="Waitlist-Control" & time %in% c(2,3)) %>% mutate(time_d = time - 2)

df_manip_check_curr_fu <- df_sbsa2_t2t3 %>% 
  select(pid, time_d, rando, 
         paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_comb_curr")) %>% 
  pivot_longer(ends_with("_comb_curr"), 
               names_to = "test", names_prefix = "facet", values_to = "score", values_drop_na = TRUE) %>% 
  group_nest(test) %>% 
  mutate(lmer_mods = map(data, ~lmerTest::lmer(score ~ time_d * rando + (1 | pid), data = .x))) %>% 
  pull(lmer_mods) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

df_manip_check_curr_fu_unlist <- as.data.frame(summary(df_manip_check_curr_fu[[1]])$coefficients) %>% as_tibble()
for (i in 2:length(df_manip_check_curr_fu)) {
  df_manip_check_curr_fu_unlist <- bind_rows(df_manip_check_curr_fu_unlist, 
                                          as.data.frame(summary(df_manip_check_curr_fu[[i]])$coefficients) %>% as_tibble())
}
kable(df_manip_check_curr_fu_unlist %>% 
        mutate(outcome = rep(sort(names(b5_vars)), each=4), 
               term = c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>% 
        rename(p = `Pr(>|t|)`, str_err = `Std. Error`, est = Estimate) %>% select(outcome, term, est, str_err, p) %>% 
        mutate(sig = ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>% 
        arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, 
      digits = 3)
outcome term est str_err p sig
extraversion Intercept 2.951 0.041 0.000 ***
extraversion time 0.032 0.025 0.217
extraversion group -0.050 0.058 0.389
extraversion time*group -0.017 0.036 0.625
agreeableness Intercept 3.697 0.035 0.000 ***
agreeableness time 0.015 0.022 0.486
agreeableness group -0.011 0.050 0.822
agreeableness time*group -0.019 0.031 0.531
conscientiousness Intercept 3.468 0.045 0.000 ***
conscientiousness time 0.072 0.028 0.009 **
conscientiousness group 0.067 0.064 0.296
conscientiousness time*group -0.060 0.039 0.121
neuroticism Intercept 3.068 0.049 0.000 ***
neuroticism time -0.062 0.028 0.030 *
neuroticism group -0.015 0.069 0.829
neuroticism time*group 0.017 0.040 0.674
openness Intercept 3.792 0.039 0.000 ***
openness time -0.001 0.022 0.969
openness group -0.038 0.054 0.484
openness time*group 0.016 0.031 0.619
sociability Intercept 2.641 0.057 0.000 ***
sociability time 0.046 0.036 0.202
sociability group -0.092 0.080 0.254
sociability time*group 0.006 0.050 0.902
assertiveness Intercept 2.984 0.051 0.000 ***
assertiveness time 0.039 0.036 0.281
assertiveness group -0.050 0.072 0.484
assertiveness time*group -0.023 0.050 0.648
energy Intercept 3.228 0.048 0.000 ***
energy time 0.011 0.040 0.781
energy group -0.008 0.068 0.905
energy time*group -0.034 0.056 0.535
compassion Intercept 3.814 0.044 0.000 ***
compassion time 0.040 0.037 0.277
compassion group 0.000 0.062 1.000
compassion time*group -0.053 0.052 0.301
respectfulness Intercept 4.067 0.041 0.000 ***
respectfulness time 0.025 0.029 0.394
respectfulness group -0.017 0.058 0.772
respectfulness time*group -0.011 0.041 0.791
trust Intercept 3.211 0.048 0.000 ***
trust time -0.018 0.035 0.603
trust group -0.019 0.068 0.780
trust time*group 0.010 0.048 0.834
organization Intercept 3.520 0.056 0.000 ***
organization time 0.077 0.037 0.038 *
organization group 0.153 0.079 0.053
organization time*group -0.027 0.052 0.607
productiveness Intercept 3.297 0.054 0.000 ***
productiveness time 0.077 0.037 0.039 *
productiveness group 0.064 0.076 0.402
productiveness time*group -0.091 0.052 0.080
responsibility Intercept 3.586 0.049 0.000 ***
responsibility time 0.064 0.040 0.113
responsibility group -0.018 0.068 0.797
responsibility time*group -0.060 0.056 0.289
anxiety Intercept 3.396 0.053 0.000 ***
anxiety time -0.035 0.038 0.355
anxiety group 0.047 0.075 0.534
anxiety time*group -0.036 0.053 0.498
depression Intercept 2.922 0.058 0.000 ***
depression time -0.076 0.039 0.052
depression group -0.013 0.081 0.876
depression time*group 0.004 0.054 0.941
volatility Intercept 2.886 0.056 0.000 ***
volatility time -0.070 0.038 0.069
volatility group -0.078 0.078 0.322
volatility time*group 0.072 0.054 0.181
curiosity Intercept 3.865 0.046 0.000 ***
curiosity time 0.029 0.033 0.374
curiosity group -0.015 0.064 0.811
curiosity time*group -0.048 0.046 0.300
aesthetic Intercept 3.724 0.051 0.000 ***
aesthetic time -0.025 0.035 0.486
aesthetic group -0.060 0.072 0.401
aesthetic time*group 0.031 0.050 0.534
imagination Intercept 3.786 0.047 0.000 ***
imagination time -0.007 0.034 0.834
imagination group -0.037 0.065 0.575
imagination time*group 0.065 0.048 0.177

No further changes from T2 to T3 that are significant at p < .001 (independent of intervention group membership). Suggestive increase in conscientiousness.

Changes in ideal self traits over time:

Show the code
df_manip_check_ideal_fu <- df_sbsa2_t2t3 %>% 
  select(pid, time_d, rando, 
         paste0(str_trunc(names(b5_vars), 5, ellipsis = ""), "_comb_ideal")) %>% 
  pivot_longer(ends_with("_comb_ideal"), 
               names_to = "test", names_prefix = "facet", values_to = "score", values_drop_na = TRUE) %>% 
  group_nest(test) %>% 
  mutate(lmer_mods = map(data, ~lmerTest::lmer(score ~ time_d * rando + (1 | pid), data = .x))) %>% 
  pull(lmer_mods) %>% 
  purrr::set_names(sort(names(b5_vars))) # ordered alphabetically

df_manip_check_ideal_fu_unlist <- as.data.frame(summary(df_manip_check_ideal_fu[[1]])$coefficients) %>% as_tibble()
for (i in 2:length(df_manip_check_ideal_fu)) {
  df_manip_check_ideal_fu_unlist <- bind_rows(df_manip_check_ideal_fu_unlist, 
                                          as.data.frame(summary(df_manip_check_ideal_fu[[i]])$coefficients) %>% as_tibble())
}
kable(df_manip_check_ideal_fu_unlist %>% 
        mutate(outcome = rep(sort(names(b5_vars)), each=4), 
               term = c(rep(c("Intercept", "time", "group", "time*group"), 20))) %>% 
        rename(p = `Pr(>|t|)`, str_err = `Std. Error`, est = Estimate) %>% select(outcome, term, est, str_err, p) %>% 
        mutate(sig = ifelse(p < .05, ifelse(p < .01, ifelse(p < .001, "***", "**"), "*"), " ")) %>% 
        arrange(factor(outcome, levels = (names(b5_vars)))), # order by BFI traits, 
      digits = 3)
outcome term est str_err p sig
extraversion Intercept 3.897 0.029 0.000 ***
extraversion time -0.006 0.024 0.808
extraversion group 0.000 0.041 0.997
extraversion time*group -0.016 0.034 0.649
agreeableness Intercept 4.099 0.032 0.000 ***
agreeableness time 0.003 0.024 0.891
agreeableness group -0.072 0.045 0.108
agreeableness time*group 0.033 0.033 0.327
conscientiousness Intercept 4.448 0.030 0.000 ***
conscientiousness time -0.007 0.023 0.761
conscientiousness group -0.022 0.042 0.605
conscientiousness time*group 0.006 0.032 0.848
neuroticism Intercept 1.700 0.029 0.000 ***
neuroticism time 0.010 0.025 0.675
neuroticism group 0.012 0.041 0.769
neuroticism time*group -0.011 0.035 0.760
openness Intercept 4.192 0.033 0.000 ***
openness time 0.004 0.026 0.864
openness group -0.054 0.047 0.250
openness time*group 0.006 0.037 0.866
sociability Intercept 3.661 0.042 0.000 ***
sociability time 0.003 0.036 0.923
sociability group 0.029 0.059 0.615
sociability time*group -0.054 0.050 0.284
assertiveness Intercept 3.826 0.040 0.000 ***
assertiveness time -0.021 0.039 0.580
assertiveness group 0.010 0.057 0.863
assertiveness time*group -0.024 0.054 0.655
energy Intercept 4.203 0.037 0.000 ***
energy time 0.004 0.040 0.927
energy group -0.044 0.052 0.397
energy time*group 0.034 0.056 0.541
compassion Intercept 4.070 0.041 0.000 ***
compassion time 0.035 0.038 0.354
compassion group -0.057 0.058 0.327
compassion time*group 0.019 0.053 0.726
respectfulness Intercept 4.454 0.035 0.000 ***
respectfulness time -0.005 0.029 0.865
respectfulness group -0.044 0.049 0.372
respectfulness time*group 0.027 0.041 0.518
trust Intercept 3.774 0.043 0.000 ***
trust time -0.021 0.037 0.568
trust group -0.112 0.061 0.066
trust time*group 0.054 0.052 0.296
organization Intercept 4.434 0.034 0.000 ***
organization time 0.037 0.034 0.281
organization group 0.038 0.048 0.428
organization time*group -0.028 0.048 0.557
productiveness Intercept 4.564 0.033 0.000 ***
productiveness time -0.049 0.032 0.121
productiveness group -0.008 0.046 0.865
productiveness time*group 0.015 0.044 0.732
responsibility Intercept 4.346 0.038 0.000 ***
responsibility time 0.001 0.034 0.984
responsibility group -0.076 0.053 0.154
responsibility time*group 0.024 0.048 0.614
anxiety Intercept 1.901 0.038 0.000 ***
anxiety time -0.002 0.039 0.953
anxiety group -0.020 0.053 0.704
anxiety time*group 0.053 0.055 0.336
depression Intercept 1.490 0.032 0.000 ***
depression time -0.029 0.031 0.350
depression group 0.021 0.044 0.637
depression time*group 0.003 0.043 0.949
volatility Intercept 1.708 0.038 0.000 ***
volatility time 0.061 0.035 0.085
volatility group 0.036 0.053 0.499
volatility time*group -0.092 0.050 0.065
curiosity Intercept 4.157 0.042 0.000 ***
curiosity time -0.008 0.039 0.847
curiosity group -0.052 0.059 0.378
curiosity time*group -0.033 0.055 0.548
aesthetic Intercept 4.034 0.044 0.000 ***
aesthetic time -0.011 0.037 0.776
aesthetic group -0.135 0.061 0.028 *
aesthetic time*group 0.080 0.052 0.125
imagination Intercept 4.385 0.038 0.000 ***
imagination time 0.037 0.036 0.315
imagination group 0.022 0.053 0.682
imagination time*group -0.029 0.051 0.575

No further changes from T2 to T3 that are significant at p < .001 (independent of intervention group membership). No group differences.